ماڈیول اسباق (1/4)
JSON: سیریلائز اور پارس کریں۔
JSON ڈیٹا ایکسچینج کا سب سے وسیع فارمیٹ ہے۔ json ماڈیول میں
معیاری لائبریری اسے مقامی طور پر ہینڈل کرتی ہے۔
Python سے 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'>میپنگ ٹائپ کریں۔
| JSON | ازگر |
|---|---|
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)ٹریلنگ "s" کے بغیر وہ فائلوں پر کام کرتے ہیں (فائل کی طرح)، تاروں پر "s" کے ساتھ۔
غیر سیریلائز کی اقسام: 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 dicts کی فہرست لوٹاتا ہے۔
3 کوششوں کے بعد حل دستیاب ہے۔
اضافی چیلنج
JSON سٹرنگ \`json_data = '{"name": "Alice", "age": 30}'\` کو دیکھتے ہوئے، اسے \`json.loads\` کا استعمال کرتے ہوئے ازگر کی لغت میں ڈی کوڈ کریں۔ \`'نام'\` کلید سے وابستہ قدر کو نکالیں اور اسے \`user_name\` میں اسٹور کریں۔ آخر میں، \`user_name\` کا اندازہ لگائیں۔
اشارہ دکھائیں۔
ڈی کوڈ کرنے کے لیے json.loads(json_data) استعمال کریں، پھر ڈیٹا ['name'] کے ذریعے رسائی حاصل کریں۔
3 کوششوں کے بعد حل دستیاب ہے۔