JSON-এ টাপল (Tuple) কনসেপ্ট নেই। পাইথনের json মডিউল টাপলকে JSON অ্যারে (List) এ কনভার্ট করে, কারণ JSON-এ সেটাই নিকটতম সমতুল্য। ইমিউটেবিলিটি প্রিজার্ভ হয় না।
ডিফল্ট বিহেভিয়ার
import json tup = (1, 2, 3) json_str = json.dumps(tup) print(json_str) # "[1, 2, 3]" - JSON অ্যারে
ইমিউটেবিলিটি প্রিজার্ভ করতে চাইলে
- Pickle (পাইথন-স্পেসিফিক,
.pklফাইল, ওয়েবের জন্য উপযোগী নয়) - কাস্টম এনকোডার/ডিকোডার লিখুন — টাপল এবং লিস্ট ডিফারেনশিয়েট করতে
কাস্টম এনকোডার উদাহরণ
import json
class TupleEncoder(json.JSONEncoder):
def encode(self, obj):
if isinstance(obj, tuple):
return '{"__tuple__": true, "items": ' + json.dumps(list(obj)) + '}'
return super().encode(obj)
def tuple_decoder(dct):
if '__tuple__' in dct:
return tuple(dct['items'])
return dct
# ব্যবহার
tup = (1, 2, 3)
encoded = json.dumps(tup, cls=TupleEncoder)
decoded = json.loads(encoded, object_hook=tuple_decoder)
print(type(decoded), decoded) # (1, 2, 3)
সেরা অনুশীলন: ক্রস-ল্যাঙ্গুয়েজ কমিউনিকেশনের জন্য JSON (লিস্ট আকারে), পাইথন-অনলি জন্য Pickle।