ওয়েব API-এ ডেটা সাধারণত JSON স্ট্রিং আকারে আদান-প্রদান হয়। পাইথনে এটি ডিকশনারি হিসেবে ব্যবহার করার জন্য পার্স করার প্রয়োজন হয়। json মডিউল এই কাজের জন্য স্ট্যান্ডার্ড টুল।
উদাহরণ
import json
# পাইথন ডিকশনারি → JSON স্ট্রিং (সিরিয়ালাইজেশন)
ini_dict = {'vishesh': 1, 'ram': 5, 'prashant': 10, 'vishal': 15}
ini_string = json.dumps(ini_dict)
print("JSON স্ট্রিং:", ini_string)
print("টাইপ:", type(ini_string))
# আউটপুট: '{"vishal": 15, "ram": 5, "vishesh": 1, "prashant": 10}'
# টাইপ:
# JSON স্ট্রিং → পাইথন ডিকশনারি (ডিসিরিয়ালাইজেশন)
final_dictionary = json.loads(ini_string)
print("ফাইনাল ডিকশনারি:", final_dictionary)
print("টাইপ:", type(final_dictionary))
# আউটপুট: {'vishal': 15, 'ram': 5, 'vishesh': 1, 'prashant': 10}
# টাইপ:
গুরুত্বপূর্ণ মেথডসমূহ
| মেথড | দিক | বিবরণ |
|---|---|---|
json.dumps(obj) | পাইথন → JSON স্ট্রিং | সিরিয়ালাইজেশন, API রেসপন্স, ফাইল লিখতে |
json.loads(str) | JSON স্ট্রিং → পাইথন | ডিসিরিয়ালাইজেশন, API রিকোয়েস্ট পার্স করতে |
json.dump(obj, file) | পাইথন → ফাইল | সીધে ফাইলে লিখতে |
json.load(file) | ফাইল → পাইথন | সીધে ফাইল থেকে পড়তে |
সাধারণ অপশনসমূহ
# সুন্দর প্রিন্ট (pretty print) json.dumps(data, indent=4, sort_keys=True) # নন-ASCII ক্যারেক্টার রাখতে (ইউনিকোড) json.dumps(data, ensure_ascii=False) # কাস্টম অবজেক্ট সিরিয়ালাইজ করতে json.dumps(obj, default=str) # বা কাস্টম ফাংশন
ত্রুটি হ্যান্ডলিং
import json
try:
data = json.loads(json_string)
except json.JSONDecodeError as e:
print(f"অবৈধ JSON: {e}")
# লগিং, ডিফল্ট ভ্যালু, বা রি-ট্রাই লজিক
নোট: JSON-এ কী অবশ্যই স্ট্রিং হতে হবে। পাইথন ডিকশনারিতে INTEGER কী থাকলে JSON-এ সেটি স্ট্রিং হয়ে যাবে (যেমন:
{1: 'a'} → {"1": "a"})।