Herkesin açıkladığı şeye basit bir örnek ekleyeceğiz,
json.load ()
json.load
file
örneğin, bir dosyanın kendisinin serisini kaldırabilir , örneğin bir nesneyi kabul eder ,
# open a json file for reading and print content using json.load
with open("/xyz/json_data.json", "r") as content:
print(json.load(content))
çıktı olacak,
{u'event': {u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'}}
Ben kullanırsanız json.loads
yerine dosyayı açmak için,
# you cannot use json.loads on file object
with open("json_data.json", "r") as content:
print(json.loads(content))
Bu hatayı alırdım:
TypeError: beklenen dize veya arabellek
json.loads ()
json.loads()
dizinin serisini kaldır.
Bu nedenle kullanmak json.loads
için dosyanın içeriğini read()
örneğin işlevini kullanarak geçirmem gerekecek.
dosyanın iade içeriği content.read()
ile kullanmak json.loads()
,
with open("json_data.json", "r") as content:
print(json.loads(content.read()))
Çıktı,
{u'event': {u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'}}
Çünkü content.read()
dize türü , yani<type 'str'>
Ben kullanırsanız json.load()
ile content.read()
, ben hata alacaksınız,
with open("json_data.json", "r") as content:
print(json.load(content.read()))
, verir
AttributeError: 'str' nesnesinin 'read' özelliği yok
Şimdi, json.load
deserialze dosyasını biliyorsunuz ve json.loads
bir dizgenin serisini kaldırıyorsunuz.
Başka bir örnek,
sys.stdin
dönmek file
benim yaptığım eğer öyleyse, nesneyi print(json.load(sys.stdin))
, ben gerçek json verileri alacak
cat json_data.json | ./test.py
{u'event': {u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'}}
Kullanmak istersem onun yerine json.loads()
yapardım print(json.loads(sys.stdin.read()))
.
json.loads(s, *)
- Deserializes
(astr
,bytes
ya dabytearray
bir JSON belgesini içeren örneği) - docs.python.org/3.6/library/json.html