Apa perbedaan antara json.dumps dan json.load? [Tutup]

143

Apa perbedaan antara json.dumpsdan json.load?

Dari pemahaman saya, satu memuat JSON ke dalam kamus dan lainnya memuat ke dalam objek.

AnMaree
sumber

Jawaban:

190

dumps mengambil objek dan menghasilkan string:

>>> a = {'foo': 3}
>>> json.dumps(a)
'{"foo": 3}'

load akan mengambil objek seperti file, membaca data dari objek itu, dan menggunakan string itu untuk membuat objek:

with open('file.json') as fh:
    a = json.load(fh)

Perhatikan itu dumpdan loadkonversi antara file dan objek, sementara dumpsdan loadskonversi antara string dan objek. Anda dapat menganggap sfungsi -less sebagai pembungkus sfungsi:

def dump(obj, fh):
    fh.write(dumps(obj))

def load(fh):
    return loads(fh.read())
chepner
sumber
Ini sangat membantu pemahaman saya. Masih saya sedikit bingung karena saya pikir semuanya adalah objek dengan Python. Bukankah string akan menjadi objek itu sendiri? Bagaimana Anda bisa mengkonversi antara keduanya? Maaf untuk pertanyaan konyol ini.
Bowen Liu
Saya menggunakan objectdalam arti "sesuatu jenis selain str". String seperti '"foo"'didekodekan ke objek Python ; string seperti diterjemahkan ke dalam daftar Python , dll.str'foo'"[1,2,3]"[1,2,3]
chepner
dumps()- penyandian ke objek JSON dump()- penyandian string yang dikodekan pada file loads()- Decode the JSON string load()- Decode saat file JSON dibaca
Jamil Noyda
74

json memuat -> mengembalikan objek dari string yang mewakili objek json.

json dumps -> mengembalikan string yang mewakili objek json dari suatu objek.

memuat dan membuang -> baca / tulis dari / ke file bukan string

stackhelper101
sumber
10
> json dumps -> mengembalikan string yang mewakili objek json dari dict. Itu dekat, tetapi itu tidak harus berupa dict yang Anda kirimkan ke json.dumps (). Anda dapat melewati daftar, atau string, atau boolean ..
Ross