مرکزی مواد پر جائیں
ماڈیول 8 · سبق 1 از 4کورس میں 29/36~10 min
ماڈیول اسباق (1/4)

JSON: سیریلائز اور پارس کریں۔

JSON ڈیٹا ایکسچینج کا سب سے وسیع فارمیٹ ہے۔ json ماڈیول میں معیاری لائبریری اسے مقامی طور پر ہینڈل کرتی ہے۔

Python سے 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'>

میپنگ ٹائپ کریں۔

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لوڈ ہو رہا ہے…

دیا `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 dicts کی فہرست لوٹاتا ہے۔

3 کوششوں کے بعد حل دستیاب ہے۔

اضافی چیلنج

ورزش#python.m8.l1.e3
کوششیں: 0لوڈ ہو رہا ہے…

JSON سٹرنگ \`json_data = '{"name": "Alice", "age": 30}'\` کو دیکھتے ہوئے، اسے \`json.loads\` کا استعمال کرتے ہوئے ازگر کی لغت میں ڈی کوڈ کریں۔ \`'نام'\` کلید سے وابستہ قدر کو نکالیں اور اسے \`user_name\` میں اسٹور کریں۔ آخر میں، \`user_name\` کا اندازہ لگائیں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

ڈی کوڈ کرنے کے لیے json.loads(json_data) استعمال کریں، پھر ڈیٹا ['name'] کے ذریعے رسائی حاصل کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔