কম্পিউটার

পাইথনে JSON এনকোডার এবং ডিকোডার প্যাকেজ


JSON মানে জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন। এটি একটি লাইটওয়েট ডেটা ইন্টারচেঞ্জ ফরম্যাট। এটি আচারের মতোই। যাইহোক, পিকেল সিরিয়ালাইজেশন পাইথন নির্দিষ্ট যেখানে JSON ফর্ম্যাট অনেক ভাষা দ্বারা প্রয়োগ করা হয়। পাইথনের স্ট্যান্ডার্ড লাইব্রেরিতে json মডিউল বস্তু সিরিয়ালাইজেশন কার্যকারিতা প্রয়োগ করে যা পিকেল এবং মার্শাল মডিউলের মতো।

পিকেল মডিউলের মতোই, json মডিউল পাইথন অবজেক্টের JSON এনকোডেড স্ট্রিং-এ সিরিয়ালাইজেশনের জন্য ডাম্প() এবং লোড() ফাংশন প্রদান করে এবং ডাম্প() এবং লোড() ফাংশনগুলি ফাইলে/থেকে সিরিয়ালাইজড পাইথন অবজেক্ট লিখতে ও পড়তে দেয়।

ডাম্পস()

এই ফাংশন বস্তুটিকে JSON ফরম্যাটে রূপান্তর করে।

লোড()

এই ফাংশনটি একটি JSON স্ট্রিংকে Python অবজেক্টে রূপান্তর করে।

নিম্নলিখিত উদাহরণগুলি এই ফাংশনগুলির মৌলিক ব্যবহার প্রদর্শন করে৷

>>> json আমদানি করুন>>> data=['Rakesh',{'marks':(50,60,70)}]>>> s=json.dumps(data)>>> s'[" রাকেশ", {"marks":[50, 60, 70]}]'>>> json.loads(s)['Rakesh', {'marks':[50, 60, 70]}]

Th dumps() ফাংশন ঐচ্ছিক sort_keys আর্গুমেন্ট নিতে পারে। ডিফল্টরূপে এটি False. সত্যে সেট করা থাকলে, অভিধান কীগুলি JSON স্ট্রিং-এ সাজানো ক্রমে উপস্থিত হয়৷

>>> data={"marks":50, "age":20, "rank":5}>>> s=json.dumps(data, sort_keys=True)>>> s'{"বয়স ":20, "marks":50, "rank":5}'>> json.loads(s){'age':20, 'marks':50, 'rank':5}

ডাম্পস() ফাংশনের আরেকটি ঐচ্ছিক প্যারামিটার রয়েছে যার নাম ইন্ডেন্ট যা একটি সংখ্যাকে মান হিসেবে নেয়। এটি প্রিন্ট আউটপুটের অনুরূপ json স্ট্রিং-এর বিন্যাসিত উপস্থাপনার প্রতিটি অংশের দৈর্ঘ্য নির্ধারণ করে।

>>> ডেটা =['রাকেশ',{'marks':(50,60,70)}]>>> s =json.dumps(data, indent=2)>>> print(s)[ "রাকেশ",{ "মার্কস":[ 50, 60, 70 ] }]

json মডিউলে উপরের ফাংশনগুলির সাথে সম্পর্কিত অবজেক্ট ওরিয়েন্টেড API রয়েছে। মডিউলটিতে দুটি শ্রেণী সংজ্ঞায়িত করা হয়েছে - JSONNCOder এবং JSONDecoder৷

JSONencoder ক্লাস

এই শ্রেণীর অবজেক্ট হল পাইথন ডেটা স্ট্রাকচারের জন্য এনকোডার। প্রতিটি পাইথন ডেটা টাইপ অনুরূপ JSON প্রকারে রূপান্তরিত হয় যা নিম্নলিখিত টেবিলে দেখানো হয়েছে।

পাইথন JSON
ডিক্ট অবজেক্ট
তালিকা, টিপল অ্যারে
str string
int, float, int- &float-derived Enums সংখ্যা
সত্য সত্য
মিথ্যা মিথ্যা
কিছুই না শূন্য

JSONEncoder ক্লাস JSONEncoder() কনস্ট্রাক্টর দ্বারা সূচিত হয়। এনকোডার ক্লাসে নিম্নলিখিত গুরুত্বপূর্ণ পদ্ধতিগুলি সংজ্ঞায়িত করা হয়েছে

  • এনকোড() − পাইথন অবজেক্টকে JSON ফর্ম্যাটে সিরিয়ালাইজ করে

  • iterencode() − বস্তুটিকে এনকোড করে এবং অবজেক্টের প্রতিটি আইটেমের এনকোডেড ফর্ম প্রদান করে একটি পুনরাবৃত্তিকারী প্রদান করে৷

  • ইন্ডেন্ট − এনকোড করা স্ট্রিং এর ইন্ডেন্ট স্তর নির্ধারণ করে

  • সর্ট_কী − হয় সত্য বা মিথ্যা কীগুলিকে সাজানো ক্রমে প্রদর্শিত হয় বা না হয়৷

  • চেক_সার্কুলার - যদি সত্য হয়, কনটেইনার টাইপ অবজেক্টে সার্কুলার রেফারেন্স চেক করুন

নিম্নলিখিত উদাহরণ পাইথন তালিকা বস্তুকে এনকোড করে।

>>> e=json.JSONEncoder()>>> e.encode(data)'["রাকেশ", {"marks":[50, 60, 70]}]'

iterencode() পদ্ধতি ব্যবহার করে, এনকোড করা স্ট্রিংয়ের প্রতিটি অংশ নীচের মত প্রদর্শিত হয়

>>> e.iterencode(data):প্রিন্ট (obj)[ "রাকেশ" { "মার্কস" :[ 50 , 60 , 70 ] }]

JSONDEcoder ক্লাস

এই ক্লাসের অবজেক্ট json স্ট্রিং-এ Python ডেটা ট্রুচারে ডিকোড করতে সাহায্য করে। এই ক্লাসের প্রধান পদ্ধতি হল ডিকোড()। নিম্নলিখিত উদাহরণ কোড পূর্ববর্তী ধাপে এনকোড করা স্ট্রিং থেকে পাইথন তালিকা বস্তু পুনরুদ্ধার করে।

>>> d=json.JSONDecoder()>>> d.decode(s)['Rakesh', {'marks':[50, 60, 70]}]

ফাইল/স্ট্রিম সহ JSON

json মডিউল load() এবং ডাম্প() ফাংশনগুলিকে সংজ্ঞায়িত করে JSON ডেটাকে অবজেক্টের মতো ফাইলে লিখতে - যেটি একটি ডিস্ক ফাইল বা বাইট স্ট্রিম হতে পারে এবং সেগুলি থেকে ডেটা ফেরত পড়তে পারে৷

ডাম্প()

এই ফাংশনটি JSON ফরম্যাটে পাইথন অবজেক্ট ডেটা এনকোড করে এবং এটি একটি ফাইলে লেখে। ফাইলটিতে অবশ্যই লেখার অনুমতি থাকতে হবে৷

>>> ডেটা=['রাকেশ', {'মার্কস':(50, 60, 70)}]>>> fp=open('json.txt','w')>>> json.dump (ডেটা,এফপি)>>> fp.close()

এই কোডটি বর্তমান ডিরেক্টরিতে 'json.txt' তৈরি করবে। এটি নিম্নরূপ বিষয়বস্তু দেখায়

<প্রে>["রাকেশ", {"মার্কস":[৫০, ৬০, ৭০]}]

লোড()

এই ফাংশনটি ফাইল থেকে JSON ডেটা লোড করে এবং এটি থেকে পাইথন অবজেক্ট তৈরি করে। ফাইলটি পড়ার অনুমতি নিয়ে খুলতে হবে৷

>>> fp=open('json.txt','r')>>> ret=json.load(fp)>>> ret['Rakesh', {'marks':[50, 60, 70]}]>>> fp.close()

এই নিবন্ধটি json মডিউলের গুরুত্বপূর্ণ ফাংশনগুলি কভার করে৷


  1. পাইথন কোড প্যাকেজিং এবং প্রকাশনা?

  2. পাইথনে __str__ এবং __repr__ এর মধ্যে পার্থক্য কি?

  3. কিভাবে JSON ফরম্যাটে পাইথন অভিধান প্রিন্ট করবেন?

  4. পাইথন ফাংশন থেকে কিভাবে একটি json অবজেক্ট ফিরিয়ে আনবেন?