.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)
0
Leonardo 22 सितंबर 2020, 05:09

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}
3
yona 23 सितंबर 2020, 22:34