Hanya akan menambahkan contoh sederhana untuk apa yang semua orang telah jelaskan,
json.load ()
json.load
dapat deserialize file itu sendiri yaitu menerima file
objek, 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.loads
untuk 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.loads
saya 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.load
file json.loads
deserialze dan deserialize string.
Contoh lain,
sys.stdin
mengembalikan file
objek, 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
,bytes
ataubytearray
contoh yang berisi dokumen JSON) - docs.python.org/3.6/library/json.html