Dengan Python, apa perbedaan antara json.load()
dan json.loads()
?
Saya kira bahwa fungsi load () harus digunakan dengan objek file (jadi saya perlu menggunakan manajer konteks) sementara fungsi load () mengambil path ke file sebagai string. Agak membingungkan.
Apakah huruf " s " dalam json.loads()
singkatan string ?
Terimakasih banyak untuk jawabanmu!
python
json
python-2.7
MMF
sumber
sumber
json.loads(s, *)
- Deserializes
(astr
,bytes
ataubytearray
contoh yang berisi dokumen JSON) - docs.python.org/3.6/library/json.htmlJawaban:
Ya,
s
singkatan dari string. Thejson.loads
fungsi tidak mengambil path file, tetapi isi file sebagai string. Lihatlah dokumentasi di https://docs.python.org/2/library/json.html !sumber
Hanya akan menambahkan contoh sederhana untuk apa yang semua orang telah jelaskan,
json.load ()
json.load
dapat deserialize file itu sendiri yaitu menerimafile
objek, misalnya,akan menampilkan,
Jika saya gunakan
json.loads
untuk membuka file,Saya akan mendapatkan kesalahan ini:
json.loads ()
json.loads()
deserialize string.Jadi untuk menggunakan
json.loads
saya harus melewati konten file menggunakanread()
fungsi, misalnya,gunakan
content.read()
denganjson.loads()
mengembalikan konten file,Keluaran,
Itu karena jenis
content.read()
string, yaitu<type 'str'>
Jika saya gunakan
json.load()
dengancontent.read()
, saya akan mendapatkan kesalahan,Memberi,
Jadi, sekarang Anda tahu
json.load
filejson.loads
deserialze dan deserialize string.Contoh lain,
sys.stdin
mengembalikanfile
objek, jadi jika saya lakukanprint(json.load(sys.stdin))
, saya akan mendapatkan data json yang sebenarnya,Jika saya ingin menggunakan
json.loads()
, saya akan melakukannyaprint(json.loads(sys.stdin.read()))
.sumber
with open()
danjson.loads()
mengembalikan pengecualian:TypeError: the JSON object must be str, bytes or bytearray, not 'TextIOWrapper'
Dokumentasi cukup jelas: https://docs.python.org/2/library/json.html
Begitu
load
juga untuk file,loads
untukstring
sumber
JAWABAN CEPAT (sangat disederhanakan!)
CONTOH
sumber
json.dump
/dumps
&json.load
/loads
bogotobogo.com/python/…Metode json.load () (tanpa "s" dalam "load") dapat membaca file secara langsung:
Metode json.loads () , yang digunakan hanya untuk argumen string .
Di sini, kita dapat melihat setelah menggunakan load () mengambil string (tipe (str)) sebagai input dan kamus kembali .
sumber
Dalam python3.7.7, definisi json.load adalah seperti di bawah ini sesuai dengan kode sumber cpython :
json.load sebenarnya memanggil json.loads dan gunakan
fp.read()
sebagai argumen pertama.Jadi, jika kode Anda adalah:
Itu sama untuk melakukan ini:
Tetapi jika Anda perlu menentukan byte yang membaca dari file sebagai suka
fp.read(10)
atau string / byte yang Anda ingin deserialize bukan dari file, Anda harus menggunakan json.loads ()Adapun json.loads (), itu tidak hanya deserialize string tetapi juga byte. Jika
s
byte atau byte, itu akan diterjemahkan ke string terlebih dahulu. Anda juga dapat menemukannya di kode sumber.sumber