JSON पायथन पार्सिंग: एक साधारण गाइड

JSON पायथन पार्सिंग: एक साधारण गाइड

JSON ('जावास्क्रिप्ट ऑब्जेक्ट नोटेशन' के लिए खड़ा है) एक टेक्स्ट-आधारित प्रारूप है जो विविध अनुप्रयोगों के बीच डेटा इंटरचेंज की सुविधा प्रदान करता है। उदाहरण के लिए, एक आवेदन सी ++ में लिखा गया है विंडोज़ पर चलने से आसानी से JSON डेटा को पायथन में लिखे गए और लिनक्स पर चलने वाले एप्लिकेशन के साथ एक्सचेंज किया जा सकता है। इसकी सादगी और लचीलेपन ने हाल के वर्षों में व्यापक रूप से उपयोग किया है, विशेष रूप से पहले के एक्सएमएल-आधारित प्रारूपों को प्राथमिकता दी है।





लगभग किसी भी भाषा और परिवेश से JSON को पार्स करने और उत्पन्न करने के लिए पुस्तकालय और टूलकिट उपलब्ध हैं। यह लेख अजगर का उपयोग करके JSON को संसाधित करने से उत्पन्न होने वाली विधियों और मुद्दों पर केंद्रित है।





कुछ JSON नमूने

आपके सामने आने वाली सबसे आम JSON इकाई है a वस्तु : नीचे दिखाए गए प्रारूप में की-वैल्यू मैपिंग का एक सेट।





यह कहने में कितना समय लगेगा

व्यक्ति.जेसन:

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

यहां बताया गया है कि आप वस्तुओं की एक सरणी का प्रतिनिधित्व कैसे कर सकते हैं। इस प्रतिनिधित्व में, सरणी का प्रत्येक आइटम एक वस्तु है। बेसबॉल खिलाड़ियों के वेतन का एक नमूना निम्नलिखित है।



वेतन.जेसन:

[ {
'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 फ़ाइल कैसे खोलें और डेटा को एक चर में कैसे लोड करें।





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 में त्रुटियाँ होती हैं, तो आपको a ValueError . आप इसे संभाल सकते हैं और यदि आवश्यक हो तो सुधारात्मक कार्रवाई कर सकते हैं।

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 डेटा से स्वचालित रूप से अपनी कक्षा का ऑब्जेक्ट बनाने की आवश्यकता हो सकती है। आप एक निर्दिष्ट करके ऐसा कर सकते हैं वस्तु_हुक फ़ंक्शन जो रूपांतरण को संभालता है। निम्नलिखित उदाहरण दिखाता है कि कैसे।

यहाँ एक कस्टम वर्ग है जो a . का प्रतिनिधित्व करता है व्यक्ति .

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 आउटपुट प्रदान करते हैं जिसका उपयोग सीधे एप्लिकेशन द्वारा किया जा सकता है। सार्वजनिक रूप से उपलब्ध कुछ में शामिल हैं:

  • स्टैक ओवरफ्लो/स्टैक एक्सचेंज। यहाँ एक यूआरएल है जो JSON प्रारूप में प्रश्नों की एक सूची देता है।
  • GitHub https://developer.github.com/v3/ पर एक JSON एपीआई प्रदान करता है।
  • और यहाँ फ़्लिकर एपीआई है: https://developer.yahoo.com/flickr/।

यदि आप इसे अच्छे उपयोग में लाने के तरीके के बारे में अधिक उदाहरण ढूंढ रहे हैं, तो इस गाइड को देखें पायथन का उपयोग करके सोशल मीडिया बॉट बनाना .

फोल्डर को एक गूगल ड्राइव से दूसरे में कैसे मूव करें

क्या आप JSON का उपयोग उपभोग करने या सेवाएं प्रदान करने के लिए कर रहे हैं? और क्या आप अपने प्रौद्योगिकी स्टैक में अजगर का उपयोग कर रहे हैं? नीचे टिप्पणियों में समझाएं।

साझा करना साझा करना कलरव ईमेल क्या यह विंडोज 11 में अपग्रेड करने लायक है?

विंडोज़ को नया रूप दिया गया है। लेकिन क्या यह आपको विंडोज 10 से विंडोज 11 में शिफ्ट होने के लिए मनाने के लिए काफी है?

आगे पढ़िए
संबंधित विषय
  • प्रोग्रामिंग
  • प्रोग्रामिंग
  • अजगर
लेखक के बारे में जय श्रीधर(17 लेख प्रकाशित) जय श्रीधर की और फ़िल्में या टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें