जवाबों:
डॉक्स के कहने के अलावा और कुछ जोड़ने के लिए नहीं है। यदि आप JSON को एक फ़ाइल / सॉकेट या जो कुछ भी डंप करना चाहते हैं, तो आपको उसके साथ जाना चाहिए dump()। यदि आपको केवल एक स्ट्रिंग (मुद्रण, पार्सिंग या जो कुछ भी) के लिए इसकी आवश्यकता है तो उपयोग करें dumps()(डंप स्ट्रिंग)
जैसा कि इस उत्तर में एंटी हेपाला ने उल्लेख किया है , ensure_asciiव्यवहार पर कुछ छोटे अंतर हैं। यह ज्यादातर अंतर्निहित write()फ़ंक्शन के काम करने के कारण होता है , क्योंकि यह पूरे स्ट्रिंग के बजाय विखंडू पर काम करता है। उस पर अधिक जानकारी के लिए उसके उत्तर की जाँच करें।
json.dump()
एक JSON प्रारूपित धारा के रूप में fp (.write () - सहायक फ़ाइल जैसी ऑब्जेक्ट के रूप में आबकारी करें
अगर यह सुनिश्चित करें कि गलत है, तो fp को लिखे गए कुछ अंश यूनिकोड उदाहरण हो सकते हैं
json.dumps()
एक JSON स्वरूपित str को सीरीज़ करें
यदि यह सुनिश्चित किया जाए कि गलत है तो परिणाम में ASCII वर्ण हो सकते हैं और वापसी मान एक यूनिकोड उदाहरण हो सकता है
एक sटेक स्ट्रिंग मापदंडों के साथ कार्य करता है । अन्य लोग फाइल स्ट्रीम लेते हैं।
मेमोरी उपयोग और गति में।
जब आप jsonstr = json.dumps(mydata)इसे पहली बार कॉल करते हैं तो यह आपके डेटा की पूरी कॉपी मेमोरी में बनाता है और उसके बाद ही आप file.write(jsonstr)इसे डिस्क पर भेजते हैं। तो यह एक तेज़ तरीका है लेकिन अगर आपके पास बचत करने के लिए डेटा का एक बड़ा टुकड़ा है तो यह एक समस्या हो सकती है।
जब आप कॉल करते हैं json.dump(mydata, file)- 's' के बिना, नई मेमोरी का उपयोग नहीं किया जाता है, क्योंकि डेटा को चंक्स द्वारा डंप किया जाता है। लेकिन पूरी प्रक्रिया लगभग 2 गुना धीमी है।
स्रोत: मैंने के सोर्स कोड की जाँच की json.dump()और json.dumps()साथ ही साथ समय को मापने वाले दोनों वेरिएंट का परीक्षण किया time.time()और मेमोरी के उपयोग को htop में देखा।
पायथन 2 में एक उल्लेखनीय अंतर यह है कि यदि आप उपयोग कर रहे हैं ensure_ascii=False, dumpतो ठीक से फ़ाइल में UTF-8 एन्कोडेड डेटा लिखेंगे (जब तक कि आप विस्तारित वर्णों के साथ 8-बिट स्ट्रिंग्स का उपयोग नहीं करते हैं जो UTF-8 नहीं हैं):
dumpsदूसरी ओर, के साथ ensure_ascii=Falseएक उत्पादन कर सकते हैं strया unicodeसिर्फ तुम क्या प्रकार आप तार के लिए इस्तेमाल किया पर निर्भर करता है:
इस रूपांतरण तालिका का उपयोग करके JSON स्वरूपित स्ट्रैट के लिए obj को सीरियल करें। यदि यह सुनिश्चित करें कि गलत है, तो परिणाम में गैर-एएससीआईआई अक्षर हो सकते हैं और वापसी मूल्य एक
unicodeउदाहरण हो सकता है ।
(जोर मेरा)। ध्यान दें कि यह अभी भी एक strउदाहरण हो सकता है ।
इस प्रकार आप फ़ाइल को संरचना में सहेजने के लिए इसके रिटर्न मान का उपयोग नहीं कर सकते हैं, बिना यह जांचे कि कौन सा प्रारूप वापस आ गया है और संभवतः साथ खेल रहा है unicode.encode।
यह निश्चित रूप से पायथन 3 में वैध चिंता का विषय नहीं है, क्योंकि यह 8-बिट / यूनिकोड भ्रम नहीं है।
के रूप में loadबनामloads , पूरी फाइल को एक JSON दस्तावेज़ loadमानता है , इसलिए आप इसका उपयोग एक एकल फ़ाइल से कई नए सीमित JSON दस्तावेज़ों को पढ़ने के लिए नहीं कर सकते।
json.dumps([b'123'])-> TypeError।