Hanya akan menambahkan contoh sederhana untuk apa yang semua orang telah jelaskan,
json.load ()
json.loaddapat deserialize file itu sendiri yaitu menerima fileobjek, misalnya,
# 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))
akan menampilkan,
{u'event': {u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'}}
Jika saya gunakan json.loadsuntuk membuka file,
# you cannot use json.loads on file object
with open("json_data.json", "r") as content:
print(json.loads(content))
Saya akan mendapatkan kesalahan ini:
TypeError: string atau buffer yang diharapkan
json.loads ()
json.loads() deserialize string.
Jadi untuk menggunakan json.loadssaya harus melewati konten file menggunakan read()fungsi, misalnya,
gunakan content.read()dengan json.loads()mengembalikan konten file,
with open("json_data.json", "r") as content:
print(json.loads(content.read()))
Keluaran,
{u'event': {u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'}}
Itu karena jenis content.read()string, yaitu<type 'str'>
Jika saya gunakan json.load()dengan content.read(), saya akan mendapatkan kesalahan,
with open("json_data.json", "r") as content:
print(json.load(content.read()))
Memberi,
AttributeError: objek 'str' tidak memiliki atribut 'baca'
Jadi, sekarang Anda tahu json.loadfile json.loadsdeserialze dan deserialize string.
Contoh lain,
sys.stdinmengembalikan fileobjek, jadi jika saya lakukan print(json.load(sys.stdin)), saya akan mendapatkan data json yang sebenarnya,
cat json_data.json | ./test.py
{u'event': {u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'}}
Jika saya ingin menggunakan json.loads(), saya akan melakukannya print(json.loads(sys.stdin.read())).
json.loads(s, *)- Deserializes(astr,bytesataubytearraycontoh yang berisi dokumen JSON) - docs.python.org/3.6/library/json.html