JSON পাইথন পার্সিং: একটি সহজ গাইড

JSON পাইথন পার্সিং: একটি সহজ গাইড

JSON (মানে 'জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন') একটি টেক্সট-ভিত্তিক ফরম্যাট যা বিভিন্ন অ্যাপ্লিকেশনের মধ্যে ডেটা আদান-প্রদানের সুবিধা প্রদান করে। উদাহরণস্বরূপ, একটি আবেদন C ++ এ লেখা উইন্ডোজ এ চলমান সহজেই পাইথনে লেখা একটি অ্যাপ্লিকেশন এবং লিনাক্সে চলার সাথে JSON ডেটা বিনিময় করতে পারে। এর সরলতা এবং নমনীয়তা সাম্প্রতিক বছরগুলিতে ব্যাপকভাবে ব্যবহার করেছে, বিশেষত পূর্ববর্তী এক্সএমএল-ভিত্তিক ফর্ম্যাটগুলির অগ্রাধিকার।





প্রায় যেকোন ভাষা এবং পরিবেশ থেকে JSON পার্সিং এবং জেনারেট করার জন্য লাইব্রেরি এবং টুলকিট পাওয়া যায়। এই নিবন্ধটি পাইথন ব্যবহার করে JSON প্রক্রিয়াকরণ থেকে উদ্ভূত পদ্ধতি এবং সমস্যাগুলিতে মনোনিবেশ করে।





কিছু JSON নমুনা

সবচেয়ে সাধারণ JSON সত্তা যা আপনি সম্মুখীন হবে তা হল একটি বস্তু : নীচে দেখানো বিন্যাসে কী-মান ম্যাপিংগুলির একটি সেট।





কিভাবে আইফোনে আইপি ঠিকানা খুঁজে পেতে হয়

person.json:

{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}

এখানে আপনি কিভাবে বস্তুর একটি অ্যারে উপস্থাপন করতে পারেন। এই উপস্থাপনায়, অ্যারের প্রতিটি আইটেম একটি বস্তু। নীচে বেসবল খেলোয়াড়দের বেতন একটি নমুনা।



বেতন। json:

[ {
'year' : 1985,
'teamId' : 'ATL',
'leagueId' : 'NL',
'playerId' : 'barkele01',
'salary' : 870000
}, {
'year' : 1985,
'teamId' : 'ATL',
'leagueId' : 'NL',
'playerId' : 'bedrost01',
'salary' : 550000
} ]

অবশ্যই, আপনি স্কেলারগুলির একটি অ্যারের প্রতিনিধিত্ব করতে পারেন। এটা এই মত দেখাচ্ছে:





[
'hello',
'world',
35
]

পাইথনে JSON পার্স করা

পাইথন প্রদান করে json মডিউল যা উভয় JSON বিশ্লেষণ করতে ব্যবহার করা যেতে পারে, পাশাপাশি পাইথন বস্তু এবং তালিকা থেকে JSON তৈরি করতে পারে।

নিম্নলিখিত কোড স্নিপেট দেখায় কিভাবে একটি JSON ফাইল খুলতে হয় এবং একটি ভেরিয়েবলে ডেটা লোড করতে হয়।





import json
with open('sample.json', 'r') as fp:
obj = json.load(fp)

যখন আপনার JSON ডেটা ধারণকারী একটি স্ট্রিং থাকে, তখন আপনি এটিকে একটি পাইথন অবজেক্টে (বা তালিকা) রূপান্তর করতে পারেন:

অ্যান্ড্রয়েডের জন্য বিনামূল্যে ওয়াইফাই কলিং অ্যাপস
obj = json.loads('''{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}''')

একটি JSON URL বিশ্লেষণ করতে, আপনি ব্যবহার করে একটি URL বস্তু তৈরি করতে পারেন urllib2 আর ব্যবহার করুন json.load () পূর্বের মত.

import urllib2, json
url = urllib2.urlopen('http://site.com/sample.json')
obj = json.load(url)

ত্রুটিগুলি পরিচালনা করা

যখন JSON এর ত্রুটি থাকে, আপনি একটি পাবেন মান ত্রুটি । আপনি এটি পরিচালনা করতে পারেন এবং প্রয়োজনে সংশোধনমূলক পদক্ষেপ নিতে পারেন।

try:
obj = json.loads('''{
'firstName': 'Alice',
'lastName: 'Hall',
'age': 35
}''')
except ValueError:
print('error loading JSON')

কমান্ড লাইন থেকে JSON পার্স করা

কখনও কখনও, পাইথন কমান্ড লাইন ব্যবহার করে JSON বিশ্লেষণ করা হয়, সম্ভবত ত্রুটিগুলি পরীক্ষা করতে বা সুন্দরভাবে ইন্ডেন্টেড আউটপুট পেতে।

cat glossary.json
# prints
{'glossary': {'GlossDiv': {'GlossList': {'GlossEntry': {'GlossDef': {'GlossSeeAlso': ['GML', 'XML'], 'para': 'A meta-markup language, used to create markup languages such as DocBook.'}, 'GlossSee': 'markup', 'Acronym': 'SGML', 'GlossTerm': 'Standard Generalized Markup Language', 'Abbrev': 'ISO 8879:1986', 'SortAs': 'SGML', 'ID': 'SGML'}}, 'title': 'S'}, 'title': 'example glossary'}}

উপরের JSON ফাইল থেকে ইন্ডেন্টেড আউটপুট পেতে, আপনি নিম্নলিখিতগুলি করতে পারেন:

python -mjson.tool glossary.json
# prints
{
'glossary': {
'GlossDiv': {
'GlossList': {
'GlossEntry': {
'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {
'GlossSeeAlso': [
'GML',
'XML'
],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'
},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'SGML',
'SortAs': 'SGML'
}
},
'title': 'S'
},
'title': 'example glossary'
}
}

এবং এখানে আপনি কিভাবে JSON বস্তুকে পাইথনে লোড করতে পারেন এবং আপনার যা প্রয়োজন তা বের করতে পারেন।

python -c 'import json; fp = open('glossary.json', 'r'); obj = json.load(fp); fp.close(); print(obj['glossary']['title']')
# prints
example glossary

ডেটা অ্যাক্সেস করা

একবার আপনি একটি পাইথন ভেরিয়েবলে JSON ডেটা লোড করার পরে, আপনি ডেটা অ্যাক্সেস করতে পারেন যেমন আপনি যে কোনও পাইথন ডিক্ট করবেন (অথবা যেমন তালিকা হতে পারে)। উদাহরণস্বরূপ, উপরের JSON ডেটা নিম্নরূপ অ্যাক্সেস করা যেতে পারে:

firstName = obj['firstName']
lastName = obj['Hall']
age = obj['age']

তথ্যের ধরণ

ডেটা প্রকারগুলি স্বয়ংক্রিয়ভাবে ডেটা থেকে নির্ধারিত হয়। মনে রাখবেন যে বয়স একটি পূর্ণসংখ্যা হিসাবে বিশ্লেষণ করা হয়।

print(type(obj['firstName']), type(obj['lastName']), type(obj['age']))
# prints

নিম্নলিখিত রূপান্তর টেবিলটি JSON থেকে পাইথনে রূপান্তর করতে ব্যবহৃত হয়।

একটি কাস্টম ক্লাস ব্যবহার করে JSON পার্স করা

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

এখানে একটি প্রতিনিধিত্ব করে একটি কাস্টম শ্রেণী ব্যক্তি

class Person:
def __init__(self, firstName, lastName, age):
self.firstName = firstName
self.lastName = lastName
self.age = age
def __str__(self):
return '{{'firstName' = '{0}','lastName' = '{1}', 'age' = {2}}}'.format(self.firstName, self.lastName, self.age)

নিম্নরূপ প্রয়োজনীয় আর্গুমেন্ট পাস করে এই শ্রেণীর একটি উদাহরণ তৈরি করা হয়েছে:

person = Person('Crystal', 'Newell', 27)

JSON পার্স করার সময় দৃষ্টান্ত তৈরি করতে এই ক্লাসটি ব্যবহার করার জন্য, আপনার একটি প্রয়োজন অবজেক্ট_হুক ফাংশন নিম্নরূপ সংজ্ঞায়িত: ফাংশন একটি পাইথন পায় ডিক্ট এবং সঠিক শ্রেণীর একটি বস্তু ফেরত দেয়।

def obj_creator(d):
return Person(d['firstName'], d['lastName'], d['age'])

আপনি এখন এটি ব্যবহার করতে পারেন অবজেক্ট_হুক JSON পার্সার আহ্বান করার সময় ফাংশন।

with open('sample.json', 'r') as fp:
obj = json.load(fp, object_hook = obj_creator)
print(obj)
# prints
{'firstName' = 'Alice','lastName' = 'Hall', 'age' = 35}

JSON ব্যবহারের উদাহরণ

JSON আজকাল অত্যন্ত জনপ্রিয়। অনেক ওয়েবসাইট এবং SaaS (সফটওয়্যার হিসাবে একটি পরিষেবা) অ্যাপ্লিকেশনগুলি JSON আউটপুট অফার করে যা সরাসরি অ্যাপ্লিকেশন দ্বারা ব্যবহার করা যেতে পারে। সর্বজনীনভাবে উপলব্ধ কিছু অন্তর্ভুক্ত:

  • স্ট্যাকওভারফ্লো/স্ট্যাক এক্সচেঞ্জ। এখানে একটি URL যা JSON বিন্যাসে প্রশ্নের একটি তালিকা প্রদান করে।
  • GitHub https://developer.github.com/v3/ এ একটি JSON api অফার করে।
  • এবং এখানে ফ্লিকার এপিআই: https://developer.yahoo.com/flickr/।

যদি আপনি এটি কিভাবে ভাল ব্যবহার করতে পারেন সে সম্পর্কে আরও উদাহরণ খুঁজছেন, তাহলে এই নির্দেশিকাটি দেখুন পাইথন ব্যবহার করে একটি সোশ্যাল মিডিয়া বট তৈরি করা

কিভাবে wii স্মার্ট টিভিতে সংযুক্ত করা যায়

আপনি কি JSON ব্যবহার করছেন বা পরিষেবা প্রদান করছেন? এবং আপনি কি আপনার প্রযুক্তি স্ট্যাকের মধ্যে পাইথন ব্যবহার করছেন? নীচের মন্তব্যগুলিতে ব্যাখ্যা করুন।

শেয়ার করুন শেয়ার করুন টুইট ইমেইল এটি কি উইন্ডোজ 11 এ আপগ্রেড করার যোগ্য?

উইন্ডোজ নতুন করে ডিজাইন করা হয়েছে। কিন্তু এটি কি আপনাকে উইন্ডোজ 10 থেকে উইন্ডোজ 11 এ স্থানান্তরিত করার জন্য যথেষ্ট?

পরবর্তী পড়ুন
সম্পর্কিত বিষয়
  • প্রোগ্রামিং
  • প্রোগ্রামিং
  • পাইথন
লেখক সম্পর্কে জয় শ্রীধর(17 নিবন্ধ প্রকাশিত) জয় শ্রীধর থেকে আরো

আমাদের নিউজলেটার সদস্যতা

প্রযুক্তি টিপস, রিভিউ, ফ্রি ইবুক এবং এক্সক্লুসিভ ডিলের জন্য আমাদের নিউজলেটারে যোগ দিন!

সাবস্ক্রাইব করতে এখানে ক্লিক করুন