मुख्य सामग्री पर जाएं
मॉड्यूल 8 · पाठ 1 का 4पाठ्यक्रम में 29/36~10 min
मॉड्यूल पाठ (1/4)

JSON: क्रमबद्ध और पार्स करें

JSON सबसे व्यापक डेटा विनिमय प्रारूप है। json मॉड्यूल में मानक पुस्तकालय इसे मूल रूप से संभालता है।

पायथन से JSON तक: dumps

json.dumps(object) एक Python ऑब्जेक्ट को JSON स्ट्रिंग में क्रमबद्ध करता है।

Python
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 sorted

JSON से Python तक: loads

json.loads(string) JSON स्ट्रिंग को पार्स करता है और Python ऑब्जेक्ट लौटाता है।

Python
testo = '{"nome": "Ada", "anni": 36}'
d = json.loads(testo)
d["nome"]    # 'Ada'
type(d)      # <class 'dict'>

मैपिंग टाइप करें

जेएसओएनपायथन
objectdict
arraylist
stringstr
numberint / float
trueTrue
falseFalse
nullNone

फ़ाइल से: dump / load

Python
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, आपकी कस्टम कक्षाएं डिफ़ॉल्ट रूप से क्रमबद्ध नहीं हैं:

Python
import datetime, json
json.dumps({"ora": datetime.datetime.now()})
# TypeError: Object of type datetime is not JSON serializable

आप default फ़ंक्शन पास कर सकते हैं जो बताता है कि उन्हें कैसे बदलना है:

Python
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 डेटा को सीधे फ़ाइलों से लिखने और पढ़ने के लिए प्रदान करती है, जो स्वाभाविक रूप से संदर्भ प्रबंधकों के साथ जुड़ती है:

Python
with open("data.json", "w") as f:
    json.dump(data, f)

इसे अजमाएं

व्यायाम#python.m8.l1.e1
प्रयास: 0लोड हो रहा है...

दिया गया `data = {'nome': 'Ada', 'anni': 36}`, इसे JSON में indent=2 के साथ क्रमबद्ध करें और वेरिएबल `json_str` को असाइन करें। `json_str` का मूल्यांकन करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

json.dumps(डेटा, इंडेंट=2)

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम की समीक्षा करें

व्यायाम#python.m8.l1.e2
प्रयास: 0लोड हो रहा है...

JSON स्ट्रिंग s = '[{"nome": "a", "v": 1}, {"nome": "b", "v": 2}]' को देखते हुए, इसे डेटा में json.loads के साथ पार्स करें और कुल 'v' मानों के योग की गणना करें। कुल का मूल्यांकन करें.

संपादक लोड हो रहा है...
संकेत दिखाएँ

json.loads निर्देशों की एक सूची लौटाता है।

3 प्रयासों के बाद समाधान उपलब्ध है

अतिरिक्त चुनौती

व्यायाम#python.m8.l1.e3
प्रयास: 0लोड हो रहा है...

JSON स्ट्रिंग \`json_data = '{"name": "Alice", "age": 30}'\` को देखते हुए, इसे \`json.loads\` का उपयोग करके पायथन डिक्शनरी में डीकोड करें। \`'नाम'\` कुंजी से संबद्ध मान निकालें और इसे \`user_name\` में संग्रहीत करें। अंत में, \`user_name\` का मूल्यांकन करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

डिकोड करने के लिए json.loads(json_data) का उपयोग करें, फिर डेटा['नाम'] के माध्यम से पहुंचें।

3 प्रयासों के बाद समाधान उपलब्ध है