.loads()
का उपयोग करके JSON से पायथन में एक शब्दकोश को परिवर्तित करते समय मुझे वर्तमान में पायथन में सुंदर मुद्रण में समस्या हो रही है। पायथन से JSON में कनवर्ट करते समय, मैं पैरामीटर के रूप में indent
का उपयोग करता हूं। हालांकि, .loads()
में इंडेंट पैरामीटर नहीं है।
मैंने अजगर JSON दस्तावेज़ों को देखा है और वे केवल .dumps()
का उपयोग करके सुंदर प्रिंट करने का तरीका दिखाते हैं।
मेरे बिंदु को स्पष्ट करने के लिए मेरा कोड यहां दिया गया है:
import json
class Kid:
def __init__(self, name, age, nickname, isFriendly):
self.name = name
self.age = age
self.nickname = nickname
self.isFriendly = isFriendly
boy = Kid("Jimmy", 10, None, False)
def encode_kid(o):
if isinstance(o, Kid):
return {"name": o.name, "age": o.age,
"nickname": o.nickname, "Is friendly": o.isFriendly}
boyJSON = json.dumps(boy, default=encode_kid, indent=2)
boyPYTHON = json.dumps(boyJSON, indent=2)
print(boyJSON)
print(boyPYTHON)
1 उत्तर
मुझे लगता है कि json.dumps()
और json.loads()
विधियों के साथ वास्तव में क्या हो रहा है, इस पर कुछ भ्रम हो सकता है।
# Serializing boy object to a str named boyJSON
# -> resulting str will have JSON format
boyJSON = json.dumps(boy, default=encode_kid, indent=2)
# Serializing boyJSON str to another str boyPYTHON
# -> resulting str will have JSON format, now with str literals
boyPYTHON = json.dumps(boyJSON, indent=2)
इसलिए boyJSON
और boyPYTHON
बहुत अलग तरीके से प्रिंट होंगे। यदि आप चाहते हैं कि वे बिल्कुल वही, अर्थात प्रिंट करें। "सुंदर", इसे आजमाएं:
boyJSON = json.dumps(boy, default=encode_kid, indent=2)
boyPYTHON = json.loads(boyJSON) # Converts boyJSON str to a dict
print(boyJSON)
print(json.dumps(boyPYTHON, indent=2)) # Print boyPYTHON dict converted to a str with JSON format
आउटपुट:
>>> print(boyJSON)
{
"name": "Jimmy",
"age": 10,
"nickname": null,
"Is friendly": false
}
>>> print(json.dumps(boyPYTHON, indent=2))
{
"name": "Jimmy",
"age": 10,
"nickname": null,
"Is friendly": false
}
>>> print(boyPYTHON)
{'name': 'Jimmy', 'age': 10, 'nickname': None, 'Is friendly': False}
>>> from pprint import pprint
>>> pprint(boyPYTHON, width=1)
{'Is friendly': False,
'age': 10,
'name': 'Jimmy',
'nickname': None}
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।