মডিউল পাঠ (1/4)
JSON: সিরিয়ালাইজ এবং পার্স
JSON হল সবচেয়ে ব্যাপক ডেটা এক্সচেঞ্জ ফরম্যাট। json মডিউল
স্ট্যান্ডার্ড লাইব্রেরি এটি স্থানীয়ভাবে পরিচালনা করে।
পাইথন থেকে JSON পর্যন্ত: dumps
json.dumps(object) একটি পাইথন বস্তুকে একটি 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 থেকে পাইথনে: loads
json.loads(string) একটি JSON স্ট্রিং পার্স করে এবং পাইথন অবজেক্ট রিটার্ন করে।
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)চেষ্টা করে দেখুন
`ডেটা = {'নোম': 'অ্যাডা', 'অ্যানি': 36}` দেওয়া, ইন্ডেন্ট=2 দিয়ে JSON-এ সিরিয়ালাইজ করুন এবং ভেরিয়েবল `json_str`-এ বরাদ্দ করুন। `json_str` মূল্যায়ন করুন।
ইঙ্গিত দেখান
json.dumps(ডেটা, ইন্ডেন্ট=2)
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
ব্যায়াম পর্যালোচনা করুন
JSON স্ট্রিং s = '[{"nome": "a", "v": 1}, {"nome": "b", "v": 2}]' দেওয়া, এটিকে json.loads দিয়ে ডেটাতে পার্স করুন এবং মোট 'v' মানের সমষ্টি গণনা করুন। মোট মূল্যায়ন করুন।
ইঙ্গিত দেখান
json.loads নির্দেশাবলীর একটি তালিকা প্রদান করে।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
অতিরিক্ত চ্যালেঞ্জ
JSON স্ট্রিং \`json_data = '{"name": "Alice", "age": 30}'\` দেওয়া, \`json.loads\` ব্যবহার করে এটিকে একটি পাইথন অভিধানে ডিকোড করুন। \`'নাম'\` কী এর সাথে যুক্ত মানটি বের করুন এবং এটিকে \`user_name\` এ সংরক্ষণ করুন। অবশেষে, \`user_name\` মূল্যায়ন করুন।
ইঙ্গিত দেখান
ডিকোড করতে json.loads(json_data) ব্যবহার করুন, তারপর ডেটা['name'] এর মাধ্যমে অ্যাক্সেস করুন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ