முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 8 · பாடம் 1 இன் 4பாடத்திட்டத்தில் 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" உடன் வேலை செய்யும்.

வரிசைப்படுத்த முடியாத வகைகள்: 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 க்கு உள்தள்ளல்=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\` ஐப் பயன்படுத்தி பைதான் அகராதியில் டிகோட் செய்யவும். \`'name'\` விசையுடன் தொடர்புடைய மதிப்பைப் பிரித்தெடுத்து \`user_name\` இல் சேமிக்கவும். இறுதியாக, \`user_name\` ஐ மதிப்பிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

டிகோட் செய்ய json.loads(json_data) ஐப் பயன்படுத்தவும், பின்னர் தரவு ['பெயர்'] வழியாக அணுகவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்