ความแตกต่างระหว่าง json.dumps และ json.load คืออะไร [ปิด]


143

ความแตกต่างระหว่างjson.dumpsและjson.loadคืออะไร?

จากความเข้าใจของฉันหนึ่งโหลด JSON ลงในพจนานุกรมและอีกหนึ่งโหลดลงในวัตถุ

คำตอบ:


190

dumps รับวัตถุและสร้างสตริง:

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

load จะใช้วัตถุเหมือนไฟล์อ่านข้อมูลจากวัตถุนั้นและใช้สตริงนั้นเพื่อสร้างวัตถุ:

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

โปรดทราบว่าdumpและloadแปลงระหว่างไฟล์และวัตถุในขณะที่dumpsและloadsแปลงระหว่างสตริงและวัตถุ คุณสามารถนึกถึงsฟังก์ชั่น -less ที่ล้อมรอบsฟังก์ชัน:

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

def load(fh):
    return loads(fh.read())

สิ่งนี้มีประโยชน์มากสำหรับความเข้าใจของฉัน ถึงกระนั้นฉันก็สับสนเล็กน้อยเพราะฉันคิดว่าทุกอย่างเป็นวัตถุในงู สตริงจะไม่เป็นวัตถุในตัวเองเหรอ? คุณแปลงได้อย่างไรระหว่างสองคนนั้น? ขออภัยสำหรับคำถามโง่ ๆ
Bowen Liu

ฉันใช้objectในความหมายของ "บางอย่างของประเภทอื่นที่ไม่ใช่str" สตริงเช่น'"foo"'ถอดรหัสกับงูหลาม strวัตถุ'foo'; สตริง like "[1,2,3]"จะถูกถอดรหัสไปยังรายการ Python [1,2,3]และอื่น ๆ
4467

dumps()- การเข้ารหัสไปยังวัตถุ JSON dump()- การเขียนสตริงที่เข้ารหัสในไฟล์loads()- ถอดรหัสสตริง JSON load()- ถอดรหัสในขณะที่อ่านไฟล์ JSON
Jamil Noyda

74

โหลด json -> ส่งคืนวัตถุจากสตริงที่แสดงวัตถุ json

json dumps -> ส่งคืนสตริงที่แสดงถึงวัตถุ json จากวัตถุ

load and dump -> read / write จาก / to file แทนที่จะเป็น string


10
> json dumps -> ส่งคืนสตริงที่แทนอ็อบเจ็กต์ json จาก dict อยู่ใกล้ แต่ไม่จำเป็นต้องเป็น dict ที่คุณส่งผ่านไปยัง json.dumps () คุณสามารถส่งรายการหรือสตริงหรือบูลีน ..
Ross
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.