ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 8 · 4లో పాఠం 1కోర్సులో 29/36~10 min
మాడ్యూల్ పాఠాలు (1/4)

JSON: సీరియలైజ్ చేసి అన్వయించండి

JSON అనేది అత్యంత విస్తృతమైన డేటా మార్పిడి ఆకృతి. json మాడ్యూల్ ప్రామాణిక లైబ్రరీ దీన్ని స్థానికంగా నిర్వహిస్తుంది.

పైథాన్ నుండి JSON వరకు: dumps

json.dumps(object) పైథాన్ ఆబ్జెక్ట్‌ను 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 నుండి పైథాన్ వరకు: loads

json.loads(string) JSON స్ట్రింగ్‌ను అన్వయిస్తుంది మరియు పైథాన్ వస్తువులను అందిస్తుంది.

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

టైప్ మ్యాపింగ్

JSONకొండచిలువ
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)

ట్రైలింగ్ "s" లేకుండా అవి ఫైళ్ళపై (ఫైల్ లాంటివి), స్ట్రింగ్స్‌పై "s"తో పని చేస్తాయి.

సీరియలైజ్ చేయలేని రకాలు: 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లోడ్ అవుతోంది...

ఇవ్వబడిన `డేటా = {'nome': 'Ada', 'anni': 36}`, ఇండెంట్=2తో JSONకి సీరియల్ చేయండి మరియు `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 = '{"పేరు": "ఆలిస్", "వయస్సు": 30}'\` ఇచ్చినట్లయితే, \`json.loads\`ని ఉపయోగించి పైథాన్ నిఘంటువులోకి డీకోడ్ చేయండి. \`'name'\` కీతో అనుబంధించబడిన విలువను సంగ్రహించి, \`user_name\`లో నిల్వ చేయండి. చివరగా, \`user_name\`ని మూల్యాంకనం చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

డీకోడ్ చేయడానికి json.loads(json_data)ని ఉపయోగించండి, ఆపై డేటా['పేరు'] ద్వారా యాక్సెస్ చేయండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది