मॉड्यूल पाठ (1/4)
JSON: क्रमबद्ध और पार्स करें
JSON सबसे व्यापक डेटा विनिमय प्रारूप है। json मॉड्यूल में
मानक पुस्तकालय इसे मूल रूप से संभालता है।
पायथन से JSON तक: dumps
json.dumps(object) एक Python ऑब्जेक्ट को JSON स्ट्रिंग में क्रमबद्ध करता है।
import json
dati = {"nome": "Ada", "anni": 36, "skills": ["python", "matematica"]}
json.dumps(dati)
# '{"nome": "Ada", "anni": 36, "skills": ["python", "matematica"]}'
json.dumps(dati, indent=2, sort_keys=True)
# multi-line formatted string, keys sortedJSON से Python तक: loads
json.loads(string) JSON स्ट्रिंग को पार्स करता है और Python ऑब्जेक्ट लौटाता है।
testo = '{"nome": "Ada", "anni": 36}'
d = json.loads(testo)
d["nome"] # 'Ada'
type(d) # <class 'dict'>मैपिंग टाइप करें
| जेएसओएन | पायथन |
|---|---|
object | dict |
array | list |
string | str |
number | int / float |
true | True |
false | False |
null | None |
फ़ाइल से: dump / load
with open("config.json", "w") as f:
json.dump(dati, f, indent=2)
with open("config.json") as f:
dati = json.load(f)अनुगामी "एस" के बिना वे स्ट्रिंग्स पर "एस" के साथ फाइलों (फ़ाइल-जैसी) पर काम करते हैं।
गैर-क्रमबद्ध प्रकार: default
datetime, set, आपकी कस्टम कक्षाएं डिफ़ॉल्ट रूप से क्रमबद्ध नहीं हैं:
import datetime, json
json.dumps({"ora": datetime.datetime.now()})
# TypeError: Object of type datetime is not JSON serializableआप default फ़ंक्शन पास कर सकते हैं जो बताता है कि उन्हें कैसे बदलना है:
def converti(obj):
if isinstance(obj, datetime.datetime):
return obj.isoformat()
if isinstance(obj, set):
return list(obj)
raise TypeError(f"non serializzabile: {type(obj)}")
json.dumps({"ora": datetime.datetime.now()}, default=converti)JSON और फ़ाइल संचालन
मानक लाइब्रेरी json.dump() और json.load() ('s' के बिना) JSON डेटा को सीधे फ़ाइलों से लिखने और पढ़ने के लिए प्रदान करती है, जो स्वाभाविक रूप से संदर्भ प्रबंधकों के साथ जुड़ती है:
with open("data.json", "w") as f:
json.dump(data, f)इसे अजमाएं
दिया गया `data = {'nome': 'Ada', 'anni': 36}`, इसे JSON में indent=2 के साथ क्रमबद्ध करें और वेरिएबल `json_str` को असाइन करें। `json_str` का मूल्यांकन करें।
संकेत दिखाएँ
json.dumps(डेटा, इंडेंट=2)
3 प्रयासों के बाद समाधान उपलब्ध है
व्यायाम की समीक्षा करें
JSON स्ट्रिंग s = '[{"nome": "a", "v": 1}, {"nome": "b", "v": 2}]' को देखते हुए, इसे डेटा में json.loads के साथ पार्स करें और कुल 'v' मानों के योग की गणना करें। कुल का मूल्यांकन करें.
संकेत दिखाएँ
json.loads निर्देशों की एक सूची लौटाता है।
3 प्रयासों के बाद समाधान उपलब्ध है
अतिरिक्त चुनौती
JSON स्ट्रिंग \`json_data = '{"name": "Alice", "age": 30}'\` को देखते हुए, इसे \`json.loads\` का उपयोग करके पायथन डिक्शनरी में डीकोड करें। \`'नाम'\` कुंजी से संबद्ध मान निकालें और इसे \`user_name\` में संग्रहीत करें। अंत में, \`user_name\` का मूल्यांकन करें।
संकेत दिखाएँ
डिकोड करने के लिए json.loads(json_data) का उपयोग करें, फिर डेटा['नाम'] के माध्यम से पहुंचें।
3 प्रयासों के बाद समाधान उपलब्ध है