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कार्यों के चारों ओर आवरण के रूप में -विहीन कार्यों के बारे में सोच सकते हैं s:

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

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

यह मेरी समझ के लिए बहुत मददगार है। फिर भी मैं थोड़ा उलझन में हूं क्योंकि मुझे लगा कि सब कुछ पायथन में एक वस्तु है। स्ट्रिंग अपने आप में एक वस्तु नहीं होगी? फिर आप दोनों के बीच कैसे रूपांतरण हो सकता है? मूर्खतापूर्ण प्रश्न के लिए क्षमा करें।
बोवेन लियू

मैं object"के अलावा एक प्रकार का कुछ" के अर्थ में उपयोग कर रहा हूँ strपायथन ऑब्जेक्ट के '"foo"'लिए एक स्ट्रिंग को डिकोड किया गया है ; जैसे स्ट्रिंग को पायथन सूची में डिकोड किया जाता है , आदिstr'foo'"[1,2,3]"[1,2,3]
chepner

dumps()- JSON ऑब्जेक्ट को एन्कोडिंग dump()- फ़ाइल पर एन्कोडेड स्ट्रिंग लेखन loads()- JSON स्ट्रिंग को डिकोड करेंload() डिकोड करें
डेकोड करें

74

json load -> json ऑब्जेक्ट का प्रतिनिधित्व करने वाली स्ट्रिंग से ऑब्जेक्ट लौटाता है।

json dumps -> एक स्ट्रिंग को एक ऑब्जेक्ट से एक json ऑब्जेक्ट का प्रतिनिधित्व करता है।

लोड और डंप -> स्ट्रिंग के बजाय फाइल को पढ़ने / लिखने के लिए / से


10
> json dumps -> एक स्ट्रिंग को एक ताना से जोंस ऑब्जेक्ट का प्रतिनिधित्व करता है। वह करीब है, लेकिन यह एक ऐसा तानाशाह होना नहीं है जिसे आप json.dumps () में पास करते हैं। आप एक सूची, या एक स्ट्रिंग, या बूलियन पास कर सकते हैं ..
रॉस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.