JSON का पूर्ण रूप JavaScript Object Notation है। यह एक हल्का डेटा इंटरचेंज फॉर्मेट है। यह pickle के समान है। हालांकि, pickle सीरियलाइज़ेशन Python-विशिष्ट है जबकि JSON फॉर्मेट कई भाषाओं द्वारा कार्यान्वित किया जाता है। Python की स्टैंडर्ड लाइब्रेरी में json मॉड्यूल ऑब्जेक्ट सीरियलाइज़ेशन कार्यक्षमता को लागू करता है जो pickle और marshal मॉड्यूल के समान है।
pickle मॉड्यूल की तरह, json मॉड्यूल भी Python ऑब्जेक्ट को JSON एन्कोडेड स्ट्रिंग में सीरियलाइज़ करने के लिए dumps() और loads() फ़ंक्शन प्रदान करता है, और सीरियलाइज़्ड Python ऑब्जेक्ट्स को फ़ाइल में लिखने/पढ़ने के लिए dump() और load() फ़ंक्शन।
dumps()
यह फ़ंक्शन ऑब्जेक्ट को JSON फॉर्मेट में कन्वर्ट करता है।
loads()
यह फ़ंक्शन JSON स्ट्रिंग को वापस Python ऑब्जेक्ट में कन्वर्ट करता है।
निम्न उदाहरण इन फ़ंक्शन्स के बेसिक उपयोग को दर्शाता है:
>>> import json
>>> data = ['Rakesh', {'marks': (50, 60, 70)}]
>>> s = json.dumps(data)
>>> s
'["Rakesh", {"marks": [50, 60, 70]}]'
>>> json.loads(s)
['Rakesh', {'marks': [50, 60, 70]}]
dumps() फ़ंक्शन वैकल्पिक sort_keys आर्गुमेंट ले सकता है। डिफ़ॉल्ट रूप से यह False है। यदि True सेट किया जाए, तो डिक्शनरी कीज़ JSON स्ट्रिंग में सॉर्टेड ऑर्डर में दिखाई देती हैं।
>>> data = {"marks": 50, "age": 20, "rank": 5}
>>> s = json.dumps(data, sort_keys=True)
>>> s
'{"age": 20, "marks": 50, "rank": 5}'
>>> json.loads(s)
{'age': 20, 'marks': 50, 'rank': 5}
dumps() फ़ंक्शन का एक और वैकल्पिक पैरामीटर indent है जो एक नंबर वैल्यू लेता है। यह JSON स्ट्रिंग के फॉर्मेटेड रिप्रेजेंटेशन के प्रत्येक सेगमेंट की लंबाई तय करता है, pprint आउटपुट के समान।
>>> data = ['Rakesh', {'marks': (50, 60, 70)}]
>>> s = json.dumps(data, indent=2)
>>> print(s)
[
"Rakesh",
{
"marks": [
50,
60,
70
]
}
]
json मॉड्यूल में उपरोक्त फ़ंक्शन्स के अनुरूप ऑब्जेक्ट-ओरिएंटेड API भी है। मॉड्यूल में दो क्लासेज डिफाइन हैं - JSONEncoder और JSONDecoder।
JSONEncoder क्लास
इस क्लास का ऑब्जेक्ट Python डेटा स्ट्रक्चर्स के लिए एनकोडर है। प्रत्येक Python डेटा टाइप को निम्न तालिका में दिखाए अनुसार संबंधित JSON टाइप में कन्वर्ट किया जाता है:
| Python | JSON |
|---|---|
| dict | object |
| list, tuple | array |
| str | string |
| int, float, int- & float-derived Enums | number |
| True | true |
| False | false |
| None | null |
JSONEncoder क्लास को JSONEncoder() कंस्ट्रक्टर द्वारा इंस्टेंटिएट किया जाता है। एनकोडर क्लास में निम्न महत्वपूर्ण मेथड्स डिफाइन हैं:
encode() - Python ऑब्जेक्ट को JSON फॉर्मेट में सीरियलाइज़ करता है।
iterencode() - ऑब्जेक्ट को एनकोड करता है और ऑब्जेक्ट में प्रत्येक आइटम के एन्कोडेड फॉर्म को यील्ड करने वाला इटरेटर लौटाता है।
indent - एन्कोडेड स्ट्रिंग के इंडेंट लेवल को निर्धारित करता है।
sort_keys - कीज़ को सॉर्टेड ऑर्डर में दिखाने के लिए true या false।
check_circular - यदि True, तो कंटेनर टाइप ऑब्जेक्ट में सर्कुलर रेफरेंस की जांच करता है।
निम्न उदाहरण Python लिस्ट ऑब्जेक्ट को एनकोड करता है:
>>> e = json.JSONEncoder()
>>> e.encode(data)
'["Rakesh", {"marks": [50, 60, 70]}]'
iterencode() मेथड का उपयोग करके, एन्कोडेड स्ट्रिंग का प्रत्येक भाग नीचे दिखाए अनुसार प्रदर्शित होता है:
>>> for obj in e.iterencode(data):
... print(obj)
[
"Rakesh"
{
"marks"
:
[
50
, 60
, 70
]
}
]
JSONDecoder क्लास
इस क्लास का ऑब्जेक्ट JSON स्ट्रिंग को वापस Python डेटा स्ट्रक्चर में डिकोड करने में मदद करता है। इस क्लास में मुख्य मेथड decode() है। निम्न उदाहरण कोड पहले के चरण में एन्कोडेड स्ट्रिंग से Python लिस्ट ऑब्जेक्ट प्राप्त करता है:
>>> d = json.JSONDecoder()
>>> d.decode(s)
['Rakesh', {'marks': [50, 60, 70]}]
फाइल्स/स्ट्रीम्स के साथ JSON
json मॉड्यूल load() और dump() फ़ंक्शन्स डिफाइन करता है जो JSON डेटा को फ़ाइल-जैसे ऑब्जेक्ट में लिखते हैं - जो डिस्क फ़ाइल या बाइट स्ट्रीम हो सकता है - और उनसे डेटा वापस पढ़ते हैं।
dump()
यह फ़ंक्शन Python ऑब्जेक्ट डेटा को JSON फॉर्मेट में एन्कोड करता है और इसे फ़ाइल में लिखता है। फ़ाइल में राइट परमिशन होनी चाहिए।
>>> data = ['Rakesh', {'marks': (50, 60, 70)}]
>>> fp = open('json.txt', 'w')
>>> json.dump(data, fp)
>>> fp.close()
यह कोड करंट डायरेक्टरी में 'json.txt' बनाएगा। इसकी सामग्री निम्न होगी:
["Rakesh", {"marks": [50, 60, 70]}]
load()
यह फ़ंक्शन फ़ाइल से JSON डेटा लोड करता है और उससे Python ऑब्जेक्ट बनाता है। फ़ाइल को रीड परमिशन के साथ खोला जाना चाहिए।
>>> fp = open('json.txt', 'r')
>>> ret = json.load(fp)
>>> ret
['Rakesh', {'marks': [50, 60, 70]}]
>>> fp.close()
इस लेख में json मॉड्यूल के महत्वपूर्ण फ़ंक्शन्स को कवर किया गया है।