Python में JSON के साथ काम करना सीखें, जिसमें सीरियलाइज़ेशन, डीसीरियलाइज़ेशन, फ़ॉर्मेटिंग, प्रदर्शन अनुकूलन, APIs को संभालना, और JSON की सीमाएँ व विकल्प समझना शामिल है।
JSON (JavaScript Object Notation) एक हल्का डेटा-इंटरचेंज फ़ॉर्मेट है, जो Python सहित कई प्रोग्रामिंग भाषाओं में डेटा विनिमय के लिए लोकप्रिय विकल्प बन चुका है। सरल सिंटैक्स और जटिल डेटा संरचनाओं को दर्शाने की क्षमता के साथ, JSON आधुनिक वेब विकास का अभिन्न हिस्सा बन गया है, जो APIs से लेकर क्लाइंट-साइड वेब अनुप्रयोगों तक सब कुछ संचालित करता है।
इस ट्यूटोरियल में, मैं Python में JSON के साथ काम करने की बुनियादी बातें बताऊँगा, जिनमें सीरियलाइज़ेशन, डीसीरियलाइज़ेशन, JSON फ़ाइलें पढ़ना और लिखना, फ़ॉर्मेटिंग, आदि शामिल हैं। इस ट्यूटोरियल के अंत तक, आप:
JSON और उसके लाभों व हानियों को समझेंगे
JSON के उपयोग मामलों की पहचान करेंगे और उसके सामान्य विकल्पों से तुलना करेंगे
Python में JSON डेटा को प्रभावी ढंग से सीरियलाइज़ और डीसीरियलाइज़ करेंगे
Python प्रोग्रामिंग भाषा में JSON डेटा के साथ काम करेंगे
Python में `json` लाइब्रेरी का उपयोग करके JSON डेटा फ़ॉर्मेट करेंगे
JSON डेटा के साथ काम करते समय प्रदर्शन को अनुकूलित करेंगे
API विकास में JSON डेटा का प्रबंधन करेंगे।
JSON क्या है?
JSON (JavaScript Object Notation) एक हल्का, भाषा-निर्पेक्ष डेटा इंटरचेंज फ़ॉर्मेट है, जिसे व्यापक रूप से अपनाया गया है और कई प्रोग्रामिंग भाषाएँ व फ्रेमवर्क इसका समर्थन करते हैं। जब सरल, आसानी से पढ़े जाने वाले फ़ॉर्मेट की आवश्यकता हो जो जटिल डेटा संरचनाओं का समर्थन करता हो और अलग-अलग कंप्यूटर प्रोग्रामों के बीच आसानी से साझा किया जा सके, तब डेटा इंटरचेंज के लिए यह एक अच्छा विकल्प है।
JSON का आदर्श उपयोग मामला वेब-आधारित अनुप्रयोगों के बीच डेटा का आदान-प्रदान है; जैसे कि जब आप किसी वेबसाइट पर एक फ़ॉर्म भरते हैं और जानकारी प्रोसेसिंग के लिए सर्वर पर भेजी जाती है।
यह परिदृश्य JSON के लिए उपयुक्त है क्योंकि यह एक हल्का और कुशल फ़ॉर्मेट है, जो XML जैसे अन्य फ़ॉर्मेट की तुलना में कम बैंडविड्थ और स्टोरेज स्पेस लेता है। साथ ही, JSON नेस्टेड ऑब्जेक्ट्स और एरेज़ जैसी जटिल डेटा संरचनाओं का समर्थन करता है, जिससे अलग-अलग सिस्टमों के बीच संरचित डेटा को दर्शाना और विनिमय करना आसान हो जाता है। JSON फ़ॉर्मेट के कुछ अन्य उपयोग मामले हैं:
एप्लिकेशन प्रोग्रामिंग इंटरफेस (APIs)। JSON आमतौर पर APIs (Application Programming Interfaces) बनाने में उपयोग किया जाता है, जो विभिन्न सिस्टमों और अनुप्रयोगों को परस्पर संचार करने देते हैं। उदाहरण के लिए, कई वेब-आधारित APIs अलग-अलग अनुप्रयोगों के बीच डेटा के आदान-प्रदान के लिए JSON को डेटा फ़ॉर्मेट के रूप में उपयोग करते हैं, जिससे विभिन्न प्रोग्रामिंग भाषाओं और प्लेटफ़ॉर्म्स के साथ एकीकरण आसान हो जाता है।
कन्फ़िगरेशन फ़ाइलें। JSON कन्फ़िगरेशन डेटा को संग्रहीत और पुनः प्राप्त करने के लिए एक सरल और पठनीय फ़ॉर्मेट प्रदान करता है। इसमें अनुप्रयोग की सेटिंग्स शामिल हो सकती हैं, जैसे यूज़र इंटरफ़ेस का लेआउट या उपयोगकर्ता वरीयताएँ।
IoT (इंटरनेट ऑफ थिंग्स)। IoT डिवाइस अक्सर बड़ी मात्रा में डेटा उत्पन्न करते हैं, जिसे सेंसर और अन्य डिवाइसों के बीच JSON का उपयोग करके अधिक कुशलता से संग्रहीत और प्रसारित किया जा सकता है।
JSON डेटा का उदाहरण
python_obj ={"name":"John Doe","age":30,"email":"[email protected]","is_employee":True,"hobbies":["reading","playing soccer","traveling"],"address":{"street":"123 Main Street","city":"New York","state":"NY","zip":"10001"}}print(python_obj)संचालित द्वारा
Learn-by-Example एडिटर, प्रवेश के लिए Tab दबाएं। बाहर नेविगेट करने के लिए Escape और फिर Tab या Shift+Tab दबाएं।
इस उदाहरण में, हमारे पास एक JSON ऑब्जेक्ट है जो किसी व्यक्ति का प्रतिनिधित्व करता है। ऑब्जेक्ट में कई गुण हैं: name, age, email, और is_employee। hobbies गुण एक एरे है जिसमें तीन स्ट्रिंग्स हैं। address गुण स्वयं कई गुणों वाला एक ऑब्जेक्ट है, जैसे street, city, state, और zip।
ध्यान दें कि JSON डेटा आमतौर पर कुंजी-मूल्य युग्मों की श्रृंखला के रूप में फ़ॉर्मेट किया जाता है, जिसमें कुंजी स्ट्रिंग के रूप में और मूल्य स्ट्रिंग, संख्या, बूलियन, एरे, या ऑब्जेक्ट जैसी विभिन्न प्रकारों में दर्शाए जाते हैं।
JSON के उपयोग के फायदे और नुकसान
नीचे, हमने JSON के उपयोग के कुछ सकारात्मक और नकारात्मक पक्ष चुने हैं।
JSON फ़ाइल के साथ काम करने के फायदे:
JSON के कुछ प्रमुख फायदे इस प्रकार हैं कि यह:
हल्का और पढ़ने में आसान। JSON फ़ाइलें गैर-तकनीकी उपयोगकर्ताओं के लिए भी पढ़ना और समझना आसान हैं। वे हल्की भी होती हैं, यानी इंटरनेट पर आसानी से प्रेषित की जा सकती हैं।
इंटरऑपरेबल: JSON फ़ाइलें इंटरऑपरेबल होती हैं, यानी उन्हें अलग-अलग सिस्टम और प्लेटफ़ॉर्म्स के बीच आसानी से विनिमय किया जा सकता है। ऐसा इसलिए है क्योंकि JSON व्यापक रूप से समर्थित मानक फ़ॉर्मेट है, और कई अनुप्रयोग एवं सेवाएँ डेटा इंटरचेंज के लिए JSON का उपयोग करती हैं। परिणामस्वरूप, JSON फ़ाइलों के साथ काम करने से सिस्टम के विभिन्न हिस्सों का एकीकरण या अलग-अलग अनुप्रयोगों के बीच डेटा साझा करना आसान हो जाता है।
सत्यापित करने में आसान: JSON फ़ाइलों को किसी स्कीमा के अनुसार आसानी से सत्यापित किया जा सकता है ताकि यह सुनिश्चित हो सके कि वे किसी विशिष्ट संरचना या नियमों के अनुरूप हैं। इससे डेटा में त्रुटियों और असंगतियों को प्रारंभिक चरण में पकड़ने में मदद मिलती है, जो समय बचा सकता है और आगे चलकर समस्याओं को रोक सकता है। JSON स्कीमा का उपयोग JSON फ़ाइल में संग्रहित डेटा के लिए स्वतः डॉक्यूमेंटेशन बनाने में भी किया जा सकता है।
JSON फ़ाइल के साथ काम करने के नुकसान:
जटिल डेटा संरचनाओं के लिए सीमित समर्थन: यद्यपि JSON फ़ाइलें कई प्रकार के डेटा टाइप्स का समर्थन करती हैं, वे ग्राफ़ या ट्री जैसी जटिल संरचनाओं को संग्रहीत करने के लिए उपयुक्त नहीं हैं। इससे कुछ प्रकार के डेटा के साथ JSON फ़ाइलों का उपयोग करना कठिन हो सकता है।
स्कीमा का प्रवर्तन नहीं: JSON फ़ाइलें किसी स्कीमा को लागू नहीं करतीं, जिसका अर्थ है कि JSON फ़ाइल में असंगत या अमान्य डेटा संग्रहीत होना संभव है। इससे उन अनुप्रयोगों में त्रुटियाँ और बग आ सकते हैं जो फ़ाइल में मौजूद डेटा पर निर्भर हैं।
सीमित क्वेरी और इंडेक्सिंग क्षमताएँ: JSON फ़ाइलें पारंपरिक डेटाबेस जैसी क्वेरी और इंडेक्सिंग क्षमताएँ प्रदान नहीं करतीं। इससे किसी बड़े JSON फ़ाइल में जटिल खोज करना या डेटा के विशिष्ट सबसेट्स को प्राप्त करना कठिन हो सकता है।
कुशल डेटा इंटरचेंज के लिए JSON के शीर्ष विकल्प
डेटा इंटरचेंज या स्टोरेज के लिए JSON के कई विकल्प हैं, जिनमें से प्रत्येक की अपनी ताकतें और कमजोरियाँ हैं। JSON के कुछ लोकप्रिय विकल्प हैं:
XML (Extensible Markup Language)। XML एक मार्कअप भाषा है जो तत्वों को परिभाषित करने के लिए टैग्स और डेटा का वर्णन करने के लिए एट्रिब्यूट्स का उपयोग करती है। यह JSON से अधिक विस्तृत फ़ॉर्मेट है, लेकिन स्कीमा वैलिडेशन और डॉक्यूमेंट संरचना के लिए मजबूत समर्थन रखता है।
YAML (Yet Another Markup Language)। YAML मानव-पठनीय डेटा सीरियलाइज़ेशन फ़ॉर्मेट है जिसे पढ़ना और लिखना आसान बनाने के लिए डिज़ाइन किया गया है। यह XML की तुलना में अधिक संक्षिप्त है और जटिल डेटा प्रकारों तथा टिप्पणियों का समर्थन करता है।
MessagePack। MessagePack एक बाइनरी सीरियलाइज़ेशन फ़ॉर्मेट है जिसे JSON से अधिक कॉम्पैक्ट और कुशल होने के लिए डिज़ाइन किया गया है। यह जटिल डेटा प्रकारों का समर्थन करता है और कम बैंडविड्थ नेटवर्क पर डेटा स्थानांतरण के लिए आदर्श है।
Protocol Buffers। Protocol Buffers Google द्वारा विकसित एक बाइनरी सीरियलाइज़ेशन फ़ॉर्मेट है। इसे अत्यधिक कुशल बनाया गया है और स्कीमा वैलिडेशन के लिए मजबूत समर्थन है, जो इसे बड़े पैमाने पर वितरित प्रणालियों के लिए आदर्श बनाता है।
BSON (Binary JSON)। BSON एक बाइनरी सीरियलाइज़ेशन फ़ॉर्मेट है जो JSON फ़ॉर्मेट को अतिरिक्त डेटा प्रकारों और दक्षता के लिए अनुकूलनों के साथ विस्तारित करता है। इसे MongoDB डेटाबेस में कुशल डेटा स्टोरेज और ट्रांसफ़र के लिए डिज़ाइन किया गया है।
डेटा इंटरचेंज फ़ॉर्मेट का चुनाव अनुप्रयोग के विशिष्ट उपयोग मामले और आवश्यकताओं पर निर्भर करता है। सादगी, बहुमुखी प्रतिभा और व्यापक अपनाने के कारण JSON लोकप्रिय बना हुआ है, लेकिन कुछ उपयोग मामलों में XML, YAML, MessagePack, Protocol Buffers और BSON जैसे फ़ॉर्मेट अधिक उपयुक्त हो सकते हैं।
JSON डेटा के साथ काम करने के लिए Python लाइब्रेरीज़
कुछ लोकप्रिय Python पैकेज हैं जिनका उपयोग आप JSON फ़ाइलों के साथ काम करने के लिए कर सकते हैं:
json. यह एक बिल्ट-इन Python पैकेज है जो JSON डेटा को एन्कोड और डिकोड करने के तरीके प्रदान करता है।
simplejson. यह पैकेज Python-विशिष्ट प्रकारों के समर्थन के साथ तेज़ JSON एन्कोडर और डिकोडर प्रदान करता है।
ujson. यह पैकेज Python के लिए अल्ट्रा-फास्ट JSON एन्कोडर और डिकोडर है।
jsonschema. यह पैकेज किसी निर्दिष्ट स्कीमा के अनुरूप JSON डेटा को वैलिडेट करने का तरीका प्रदान करता है।
JSON सीरियलाइज़ेशन और डीसीरियलाइज़ेशन
JSON सीरियलाइज़ेशन और डीसीरियलाइज़ेशन वह प्रक्रिया है जिसमें JSON डेटा को अन्य फ़ॉर्मेट्स, जैसे Python ऑब्जेक्ट्स या स्ट्रिंग्स, में और उनसे परिवर्तित किया जाता है ताकि डेटा का संप्रेषण या भंडारण किया जा सके।
सीरियलाइज़ेशन किसी ऑब्जेक्ट या डेटा संरचना को JSON स्ट्रिंग में बदलने की प्रक्रिया है। यह प्रक्रिया आवश्यक है ताकि डेटा को ऐसे फ़ॉर्मेट में संप्रेषित या संग्रहीत किया जा सके जिसे अन्य सिस्टम या प्रोग्राम पढ़ सकें। वेब विकास में JSON सीरियलाइज़ेशन एक सामान्य तकनीक है, जहाँ डेटा अक्सर अलग-अलग सिस्टमों या अनुप्रयोगों के बीच प्रसारित होता है।
दूसरी ओर, डीसीरियलाइज़ेशन JSON स्ट्रिंग को वापस किसी ऑब्जेक्ट या डेटा संरचना में बदलने की प्रक्रिया है। प्रोग्राम या सिस्टम में डेटा का उपयोग करने के लिए यह प्रक्रिया आवश्यक है। वेब विकास में JSON डीसीरियलाइज़ेशन का उपयोग अक्सर किसी API या अन्य स्रोत से प्राप्त डेटा को पार्स करने के लिए किया जाता है।
वेब विकास से लेकर डेटा विश्लेषण और उससे आगे तक, विभिन्न संदर्भों में JSON डेटा के साथ काम करने के लिए JSON सीरियलाइज़ेशन और डीसीरियलाइज़ेशन महत्वपूर्ण तकनीकें हैं। कई प्रोग्रामिंग भाषाएँ सीरियलाइज़ेशन और डीसीरियलाइज़ेशन को आसान और कुशल बनाने के लिए बिल्ट-इन लाइब्रेरीज़ या पैकेज प्रदान करती हैं।
यहाँ json लाइब्रेरी के कुछ सामान्य फ़ंक्शंस दिए गए हैं जिनका उपयोग सीरियलाइज़ेशन और डीसीरियलाइज़ेशन के लिए किया जाता है।
1. json.dumps()
यह फ़ंक्शन किसी Python ऑब्जेक्ट को JSON स्ट्रिंग में सीरियलाइज़ करने के लिए उपयोग होता है। dumps() फ़ंक्शन एक तर्क लेता है, Python ऑब्जेक्ट, और एक JSON स्ट्रिंग लौटाता है। उदाहरण देखें:
import json
# Python object to JSON string
python_obj ={'name':'John','age':30}
json_string = json.dumps(python_obj)print(json_string)# Expected output: {"name": "John", "age": 30}संचालित द्वारा
Learn-by-Example एडिटर, प्रवेश के लिए Tab दबाएं। बाहर नेविगेट करने के लिए Escape और फिर Tab या Shift+Tab दबाएं।
यह फ़ंक्शन किसी JSON स्ट्रिंग को Python ऑब्जेक्ट में पार्स करने के लिए उपयोग होता है। loads() फ़ंक्शन एक तर्क लेता है, JSON स्ट्रिंग, और एक Python ऑब्जेक्ट लौटाता है। उदाहरण देखें:
यह फ़ंक्शन किसी Python ऑब्जेक्ट को सीरियलाइज़ कर JSON फ़ाइल में लिखने के लिए उपयोग होता है। dump() फ़ंक्शन दो तर्क लेता है, Python ऑब्जेक्ट और फ़ाइल ऑब्जेक्ट। उदाहरण देखें:
import json
# serialize Python object and write to JSON file
python_obj ={'name':'John','age':30}withopen('data.json','w')asfile:
json.dump(python_obj,file)# No expected outputसंचालित द्वारा
Learn-by-Example एडिटर, प्रवेश के लिए Tab दबाएं। बाहर नेविगेट करने के लिए Escape और फिर Tab या Shift+Tab दबाएं।
यह फ़ंक्शन JSON फ़ाइल पढ़ने और उसकी सामग्री को Python ऑब्जेक्ट में पार्स करने के लिए उपयोग होता है। load() फ़ंक्शन एक तर्क लेता है, फ़ाइल ऑब्जेक्ट, और एक Python ऑब्जेक्ट लौटाता है। उदाहरण देखें:
import json
# read JSON file and parse contentswithopen('data.json','r')asfile:
python_obj = json.load(file)print(python_obj)# Expected output: {'name': 'John', 'age': 30}संचालित द्वारा
Learn-by-Example एडिटर, प्रवेश के लिए Tab दबाएं। बाहर नेविगेट करने के लिए Escape और फिर Tab या Shift+Tab दबाएं।
Python और JSON के डेटा प्रकार अलग हैं; Python JSON की तुलना में अधिक विविध डेटा प्रकार प्रदान करता है। जहाँ Python sets और dictionaries जैसी जटिल डेटा संरचनाएँ संग्रहीत कर सकता है, वहीं JSON स्ट्रिंग्स, नंबर्स, बूलियन, एरेज़ और ऑब्जेक्ट्स तक सीमित है। आइए कुछ अंतर देखें:
Python
JSON
dict
Object
list
Array
tuple
Array
str
String
int
Number
float
Number
True
true
False
false
None
null
Python list को JSON में बदलना
Python list को JSON फ़ॉर्मेट में बदलने के लिए, आप json लाइब्रेरी के json.dumps() मेथड का उपयोग कर सकते हैं।
इस उदाहरण में, हमारे पास my_list नाम की एक सूची है जिसमें पूर्णांकों और स्ट्रिंग्स का मिश्रण है। फिर हम सूची को JSON-फ़ॉर्मेटेड स्ट्रिंग में बदलने के लिए json.dumps() मेथड का उपयोग करते हैं, जिसे हम json_string वैरिएबल में संग्रहीत करते हैं।
JSON डेटा को फ़ॉर्मेट करना
Python में, json.dumps() फ़ंक्शन JSON आउटपुट को फ़ॉर्मेट और ऑर्डर करने के विकल्प प्रदान करता है। यहाँ कुछ सामान्य विकल्प हैं:
1. Indent
यह विकल्प आउटपुट JSON स्ट्रिंग में इंडेंटेशन के लिए उपयोग होने वाली स्पेस की संख्या निर्दिष्ट करता है। उदाहरण:
import json
data ={"name":"John","age":30,"city":"New York"}
json_data = json.dumps(data, indent=2)print(json_data)# Expected output: a JSON formatted string with an indentation of 2 spaces for each level of nesting:# {# "name": "John",# "age": 30,# "city": "New York"# }संचालित द्वारा
Learn-by-Example एडिटर, प्रवेश के लिए Tab दबाएं। बाहर नेविगेट करने के लिए Escape और फिर Tab या Shift+Tab दबाएं।
यह विकल्प आपको आउटपुट JSON स्ट्रिंग में उपयोग किए जाने वाले सेपरेटर्स निर्दिष्ट करने देता है। separators पैरामीटर दो स्ट्रिंग्स का एक ट्यूपल लेता है, जहाँ पहली स्ट्रिंग JSON ऑब्जेक्ट के की-वैल्यू पेयर्स के बीच का सेपरेटर है, और दूसरी स्ट्रिंग JSON एरे में आइटम्स के बीच का सेपरेटर है। उदाहरण:
import json
data ={"name":"John","age":30,"city":"New York"}
json_data = json.dumps(data, separators=(",",":"))print(json_data)# Expected output: a JSON formatted string with a comma separator between key-value pairs and a colon separator between keys and values:# {"name":"John","age":30,"city":"New York"}संचालित द्वारा
Learn-by-Example एडिटर, प्रवेश के लिए Tab दबाएं। बाहर नेविगेट करने के लिए Escape और फिर Tab या Shift+Tab दबाएं।
import requests
import json
url ="https://jsonplaceholder.typicode.com/posts"
response = requests.get(url)if response.status_code ==200:
data = json.loads(response.text)print(data)else:print(f"Error retrieving data, status code: {response.status_code}")# Expected output: a JSON object as the response of the requestसंचालित द्वारा
Learn-by-Example एडिटर, प्रवेश के लिए Tab दबाएं। बाहर नेविगेट करने के लिए Escape और फिर Tab या Shift+Tab दबाएं।
यह कोड Python में requests लाइब्रेरी और json लाइब्रेरी का उपयोग करके URL "https://jsonplaceholder.typicode.com/posts" पर अनुरोध भेजता है और डेटा प्राप्त करता है। requests.get(url) पंक्ति वास्तविक अनुरोध करती है और प्रतिक्रिया को response वैरिएबल में संग्रहीत करती है।
पंक्ति if response.status_code == 200: जाँचती है कि प्रतिक्रिया कोड 200 है या नहीं, जो दर्शाता है कि अनुरोध सफल रहा। यदि अनुरोध सफल होता है, तो कोड json.loads() मेथड का उपयोग करके प्रतिक्रिया टेक्स्ट को Python डिक्शनरी में लोड करता है और उसे data वैरिएबल में संग्रहीत करता है।
जब आप Python में बड़े पैमाने पर JSON डेटा के साथ काम करते हैं, तो कोड के प्रदर्शन को अनुकूलित करना महत्वपूर्ण है ताकि यह कुशलतापूर्वक चले। यहाँ Python में JSON प्रदर्शन को अनुकूलित करने के लिए कुछ सुझाव दिए गए हैं:
cjson या ujson लाइब्रेरीज़ का उपयोग करें। ये लाइब्रेरीज़ Python की मानक JSON लाइब्रेरी की तुलना में तेज़ हैं और JSON सीरियलाइज़ेशन और डीसीरियलाइज़ेशन के प्रदर्शन में उल्लेखनीय सुधार कर सकती हैं।
अनावश्यक कन्वर्ज़न से बचें। Python ऑब्जेक्ट्स और JSON डेटा के बीच बार-बार रूपांतरण प्रदर्शन की दृष्टि से महँगा हो सकता है। संभव हो तो, सीधे JSON डेटा के साथ काम करने का प्रयास करें और अनावश्यक रूपांतरणों से बचें।
बड़े JSON डेटा के लिए जेनरेटर का उपयोग करें। बड़े JSON डेटा के साथ काम करते समय जेनरेटर का उपयोग मेमोरी उपयोग को कम करने और प्रदर्शन में सुधार करने में मदद कर सकता है।
नेटवर्क ओवरहेड को न्यूनतम रखें। नेटवर्क पर JSON डेटा प्रसारित करते समय, स्थानांतरित डेटा की मात्रा को कम करना प्रदर्शन में सुधार कर सकता है। gzip जैसी कम्प्रेशन तकनीकों का उपयोग करें ताकि नेटवर्क पर भेजने से पहले JSON डेटा का आकार घटाया जा सके।
कैशिंग का उपयोग करें। यदि आप बार-बार एक ही JSON डेटा तक पहुँचते हैं, तो डेटा को कैश करने से डेटा लोड करने के अनुरोधों की संख्या घटाकर प्रदर्शन बेहतर हो सकता है।
डेटा संरचना का अनुकूलन करें: JSON डेटा की संरचना भी प्रदर्शन को प्रभावित कर सकती है। सरल, समतल (flatter) संरचना जटिल, नेस्टेड संरचना की तुलना में बेहतर प्रदर्शन दे सकती है।
JSON फ़ॉर्मेट की सीमाएँ
हालाँकि कई अनुप्रयोगों में डेटा विनिमय के लिए JSON एक लोकप्रिय फ़ॉर्मेट है, कुछ इम्प्लीमेंटेशन सीमाएँ हैं जिनसे अवगत रहना चाहिए:
कुछ डेटा प्रकारों के लिए समर्थन का अभाव। JSON में बाइनरी डेटा, तारीखें और समय जैसे कुछ डेटा प्रकारों के लिए सीमित समर्थन है। यद्यपि इन प्रकारों को JSON में दर्शाने के उपाय हैं, लेकिन इससे सीरियलाइज़ेशन और डीसीरियलाइज़ेशन अधिक जटिल हो सकते हैं।
टिप्पणियों के लिए समर्थन का अभाव। YAML और XML जैसे अन्य फ़ॉर्मेट्स के विपरीत, JSON टिप्पणियों का समर्थन नहीं करता। इससे संदर्भ या डॉक्यूमेंटेशन प्रदान करने के लिए JSON डेटा में टिप्पणियाँ जोड़ना कठिन हो जाता है।
एक्सटेंशंस के लिए सीमित लचीलापन। हालाँकि JSON कस्टम प्रॉपर्टीज़ या $schema प्रॉपर्टी के माध्यम से एक्सटेंशंस का समर्थन करता है, फिर भी XML या YAML जैसे अन्य फ़ॉर्मेट्स की तुलना में इसमें एक्सटेंशंस के लिए कम लचीलापन है।
कुंजी क्रम बनाए रखने का कोई मानक नहीं। JSON में किसी ऑब्जेक्ट में कुंजियों के क्रम को संरक्षित करने का मानक तरीका नहीं है, जिससे JSON ऑब्जेक्ट्स की तुलना या मर्ज करना कठिन हो सकता है।
सर्कुलर रेफरेंसेज़ के लिए सीमित समर्थन। JSON में सर्कुलर रेफरेंसेज़, जहाँ कोई ऑब्जेक्ट स्वयं को संदर्भित करता है, के लिए सीमित समर्थन है। इससे कुछ डेटा संरचनाओं को JSON में दर्शाना कठिन हो सकता है।
JSON डेटा के साथ काम करते समय इन इम्प्लीमेंटेशन सीमाओं से अवगत रहना महत्वपूर्ण है, ताकि यह सुनिश्चित किया जा सके कि फ़ॉर्मेट आपकी आवश्यकताओं के अनुरूप है और सीरियलाइज़ेशन, डीसीरियलाइज़ेशन और डेटा प्रतिनिधित्व में संभावित समस्याओं से बचा जा सके।
निष्कर्ष
JSON आधुनिक वेब विकास में डेटा विनिमय के लिए एक बहुमुखी और व्यापक रूप से उपयोग किया जाने वाला फ़ॉर्मेट है, और Python JSON डेटा के साथ काम करने के लिए शक्तिशाली टूल्स का सेट प्रदान करता है। चाहे आप API बना रहे हों या क्लाइंट-साइड वेब अनुप्रयोगों के साथ काम कर रहे हों, Python में JSON की बुनियादी समझ किसी भी आधुनिक डेवलपर के लिए आवश्यक कौशल है। इस ट्यूटोरियल में बताई गई तकनीकों में निपुण होकर, आप Python में JSON डेटा के साथ काम करने और इस सशक्त डेटा इंटरचेंज फ़ॉर्मेट का लाभ उठाते हुए मजबूत, स्केलेबल अनुप्रयोग बनाने की दिशा में अच्छी तरह अग्रसर होंगे।
यदि आप सामान्य स्टोरेज फ़ॉर्मेट्स में रखे गए डेटा को इम्पोर्ट करने के लिए पाइपलाइंस बनाना सीखना चाहते हैं, तो हमारा Streamlined Data Ingestion with pandas कोर्स देखें। आप pandas, जो एनालिटिक्स के लिए एक प्रमुख Python लाइब्रेरी है, का उपयोग करके विभिन्न स्रोतों से डेटा प्राप्त करेंगे, जिनमें सर्वे रेस्पॉन्स की स्प्रेडशीट, सार्वजनिक सेवा अनुरोधों का डेटाबेस और एक लोकप्रिय रिव्यू साइट का API शामिल है।
FAQs
मैं इतनी बड़ी JSON फ़ाइलों को कैसे संभालूँ जो मेमोरी में फिट नहीं होतीं?⌄
ऐसी बड़ी JSON फ़ाइलों के लिए जो मेमोरी में फिट नहीं होतीं, आप Python की ijson लाइब्रेरी का उपयोग करके डेटा को क्रमिक रूप से प्रोसेस कर सकते हैं या यदि JSON छोटे-छोटे ऑब्जेक्ट्स की श्रृंखला के रूप में संरचित है तो फ़ाइल को लाइन-बाय-लाइन पढ़ सकते हैं। उदाहरण:
import ijson
withopen('large_file.json','r')asfile:for item in ijson.items(file,'item'):print(item)# Process each JSON item individuallyसंचालित द्वारा
मैं Python में दो JSON ऑब्जेक्ट्स को कैसे मर्ज करूँ?⌄
आप दो JSON ऑब्जेक्ट्स को पहले Python डिक्शनरी में डीसीरियलाइज़ करके, फिर एक डिक्शनरी को दूसरी की सामग्री से अपडेट करके मर्ज कर सकते हैं:
क्या JSON डेटा में टिप्पणियाँ हो सकती हैं, और मैं उन्हें Python में कैसे संभालूँ?⌄
JSON मूल रूप से टिप्पणियों का समर्थन नहीं करता, लेकिन यदि आप किसी नॉन-स्टैंडर्ड JSON फ़ाइल के साथ काम कर रहे हैं जिसमें टिप्पणियाँ शामिल हैं (उदा., // या /* */ का उपयोग), तो पार्स करने से पहले आप फ़ाइल को प्रीप्रोसेस करके टिप्पणियाँ हटा सकते हैं। उदाहरण:
import json
import re
withopen('file_with_comments.json','r')asfile:
content =file.read()# Remove comments
content = re.sub(r'//.*?$|/\*.*?\*/','', content, flags=re.DOTALL | re.MULTILINE)
data = json.loads(content)print(data)संचालित द्वारा
JSON (JavaScript Object Notation) एक हल्का डेटा-इंटरचेंज फ़ॉर्मेट है, जो Python सहित कई प्रोग्रामिंग भाषाओं में डेटा विनिमय के लिए लोकप्रिय विकल्प बन चुका है। सरल सिंटैक्स और जटिल डेटा संरचनाओं को दर्शाने की क्षमता के साथ, JSON आधुनिक वेब विकास का अभिन्न हिस्सा बन गया है, जो APIs से लेकर क्लाइंट-साइड वेब अनुप्रयोगों तक सब कुछ संचालित करता है।
इस ट्यूटोरियल में, मैं Python में JSON के साथ काम करने की बुनियादी बातें बताऊँगा, जिनमें सीरियलाइज़ेशन, डीसीरियलाइज़ेशन, JSON फ़ाइलें पढ़ना और लिखना, फ़ॉर्मेटिंग, आदि शामिल हैं। इस ट्यूटोरियल के अंत तक, आप:
JSON क्या है?
JSON (JavaScript Object Notation) एक हल्का, भाषा-निर्पेक्ष डेटा इंटरचेंज फ़ॉर्मेट है, जिसे व्यापक रूप से अपनाया गया है और कई प्रोग्रामिंग भाषाएँ व फ्रेमवर्क इसका समर्थन करते हैं। जब सरल, आसानी से पढ़े जाने वाले फ़ॉर्मेट की आवश्यकता हो जो जटिल डेटा संरचनाओं का समर्थन करता हो और अलग-अलग कंप्यूटर प्रोग्रामों के बीच आसानी से साझा किया जा सके, तब डेटा इंटरचेंज के लिए यह एक अच्छा विकल्प है।
JSON का आदर्श उपयोग मामला वेब-आधारित अनुप्रयोगों के बीच डेटा का आदान-प्रदान है; जैसे कि जब आप किसी वेबसाइट पर एक फ़ॉर्म भरते हैं और जानकारी प्रोसेसिंग के लिए सर्वर पर भेजी जाती है।
यह परिदृश्य JSON के लिए उपयुक्त है क्योंकि यह एक हल्का और कुशल फ़ॉर्मेट है, जो XML जैसे अन्य फ़ॉर्मेट की तुलना में कम बैंडविड्थ और स्टोरेज स्पेस लेता है। साथ ही, JSON नेस्टेड ऑब्जेक्ट्स और एरेज़ जैसी जटिल डेटा संरचनाओं का समर्थन करता है, जिससे अलग-अलग सिस्टमों के बीच संरचित डेटा को दर्शाना और विनिमय करना आसान हो जाता है। JSON फ़ॉर्मेट के कुछ अन्य उपयोग मामले हैं:
JSON डेटा का उदाहरण
इस उदाहरण में, हमारे पास एक JSON ऑब्जेक्ट है जो किसी व्यक्ति का प्रतिनिधित्व करता है। ऑब्जेक्ट में कई गुण हैं: name, age, email, और is_employee। hobbies गुण एक एरे है जिसमें तीन स्ट्रिंग्स हैं। address गुण स्वयं कई गुणों वाला एक ऑब्जेक्ट है, जैसे street, city, state, और zip।
ध्यान दें कि JSON डेटा आमतौर पर कुंजी-मूल्य युग्मों की श्रृंखला के रूप में फ़ॉर्मेट किया जाता है, जिसमें कुंजी स्ट्रिंग के रूप में और मूल्य स्ट्रिंग, संख्या, बूलियन, एरे, या ऑब्जेक्ट जैसी विभिन्न प्रकारों में दर्शाए जाते हैं।
JSON के उपयोग के फायदे और नुकसान
नीचे, हमने JSON के उपयोग के कुछ सकारात्मक और नकारात्मक पक्ष चुने हैं।
JSON फ़ाइल के साथ काम करने के फायदे:
JSON के कुछ प्रमुख फायदे इस प्रकार हैं कि यह:
JSON फ़ाइल के साथ काम करने के नुकसान:
कुशल डेटा इंटरचेंज के लिए JSON के शीर्ष विकल्प
डेटा इंटरचेंज या स्टोरेज के लिए JSON के कई विकल्प हैं, जिनमें से प्रत्येक की अपनी ताकतें और कमजोरियाँ हैं। JSON के कुछ लोकप्रिय विकल्प हैं:
डेटा इंटरचेंज फ़ॉर्मेट का चुनाव अनुप्रयोग के विशिष्ट उपयोग मामले और आवश्यकताओं पर निर्भर करता है। सादगी, बहुमुखी प्रतिभा और व्यापक अपनाने के कारण JSON लोकप्रिय बना हुआ है, लेकिन कुछ उपयोग मामलों में XML, YAML, MessagePack, Protocol Buffers और BSON जैसे फ़ॉर्मेट अधिक उपयुक्त हो सकते हैं।
JSON डेटा के साथ काम करने के लिए Python लाइब्रेरीज़
कुछ लोकप्रिय Python पैकेज हैं जिनका उपयोग आप JSON फ़ाइलों के साथ काम करने के लिए कर सकते हैं:
JSON सीरियलाइज़ेशन और डीसीरियलाइज़ेशन
JSON सीरियलाइज़ेशन और डीसीरियलाइज़ेशन वह प्रक्रिया है जिसमें JSON डेटा को अन्य फ़ॉर्मेट्स, जैसे Python ऑब्जेक्ट्स या स्ट्रिंग्स, में और उनसे परिवर्तित किया जाता है ताकि डेटा का संप्रेषण या भंडारण किया जा सके।
सीरियलाइज़ेशन किसी ऑब्जेक्ट या डेटा संरचना को JSON स्ट्रिंग में बदलने की प्रक्रिया है। यह प्रक्रिया आवश्यक है ताकि डेटा को ऐसे फ़ॉर्मेट में संप्रेषित या संग्रहीत किया जा सके जिसे अन्य सिस्टम या प्रोग्राम पढ़ सकें। वेब विकास में JSON सीरियलाइज़ेशन एक सामान्य तकनीक है, जहाँ डेटा अक्सर अलग-अलग सिस्टमों या अनुप्रयोगों के बीच प्रसारित होता है।
दूसरी ओर, डीसीरियलाइज़ेशन JSON स्ट्रिंग को वापस किसी ऑब्जेक्ट या डेटा संरचना में बदलने की प्रक्रिया है। प्रोग्राम या सिस्टम में डेटा का उपयोग करने के लिए यह प्रक्रिया आवश्यक है। वेब विकास में JSON डीसीरियलाइज़ेशन का उपयोग अक्सर किसी API या अन्य स्रोत से प्राप्त डेटा को पार्स करने के लिए किया जाता है।
वेब विकास से लेकर डेटा विश्लेषण और उससे आगे तक, विभिन्न संदर्भों में JSON डेटा के साथ काम करने के लिए JSON सीरियलाइज़ेशन और डीसीरियलाइज़ेशन महत्वपूर्ण तकनीकें हैं। कई प्रोग्रामिंग भाषाएँ सीरियलाइज़ेशन और डीसीरियलाइज़ेशन को आसान और कुशल बनाने के लिए बिल्ट-इन लाइब्रेरीज़ या पैकेज प्रदान करती हैं।
यहाँ
jsonलाइब्रेरी के कुछ सामान्य फ़ंक्शंस दिए गए हैं जिनका उपयोग सीरियलाइज़ेशन और डीसीरियलाइज़ेशन के लिए किया जाता है।1. json.dumps()
यह फ़ंक्शन किसी Python ऑब्जेक्ट को JSON स्ट्रिंग में सीरियलाइज़ करने के लिए उपयोग होता है। dumps() फ़ंक्शन एक तर्क लेता है, Python ऑब्जेक्ट, और एक JSON स्ट्रिंग लौटाता है। उदाहरण देखें:
2. json.loads()
यह फ़ंक्शन किसी JSON स्ट्रिंग को Python ऑब्जेक्ट में पार्स करने के लिए उपयोग होता है। loads() फ़ंक्शन एक तर्क लेता है, JSON स्ट्रिंग, और एक Python ऑब्जेक्ट लौटाता है। उदाहरण देखें:
3. json.dump()
यह फ़ंक्शन किसी Python ऑब्जेक्ट को सीरियलाइज़ कर JSON फ़ाइल में लिखने के लिए उपयोग होता है। dump() फ़ंक्शन दो तर्क लेता है, Python ऑब्जेक्ट और फ़ाइल ऑब्जेक्ट। उदाहरण देखें:
4. json.load()
यह फ़ंक्शन JSON फ़ाइल पढ़ने और उसकी सामग्री को Python ऑब्जेक्ट में पार्स करने के लिए उपयोग होता है। load() फ़ंक्शन एक तर्क लेता है, फ़ाइल ऑब्जेक्ट, और एक Python ऑब्जेक्ट लौटाता है। उदाहरण देखें:
Python और JSON के डेटा प्रकार अलग हैं; Python JSON की तुलना में अधिक विविध डेटा प्रकार प्रदान करता है। जहाँ Python sets और dictionaries जैसी जटिल डेटा संरचनाएँ संग्रहीत कर सकता है, वहीं JSON स्ट्रिंग्स, नंबर्स, बूलियन, एरेज़ और ऑब्जेक्ट्स तक सीमित है। आइए कुछ अंतर देखें:
Python
JSON
dict
Object
list
Array
tuple
Array
str
String
int
Number
float
Number
True
true
False
false
None
null
Python list को JSON में बदलना
Python list को JSON फ़ॉर्मेट में बदलने के लिए, आप json लाइब्रेरी के
json.dumps()मेथड का उपयोग कर सकते हैं।इस उदाहरण में, हमारे पास my_list नाम की एक सूची है जिसमें पूर्णांकों और स्ट्रिंग्स का मिश्रण है। फिर हम सूची को JSON-फ़ॉर्मेटेड स्ट्रिंग में बदलने के लिए json.dumps() मेथड का उपयोग करते हैं, जिसे हम json_string वैरिएबल में संग्रहीत करते हैं।
JSON डेटा को फ़ॉर्मेट करना
Python में,
json.dumps()फ़ंक्शन JSON आउटपुट को फ़ॉर्मेट और ऑर्डर करने के विकल्प प्रदान करता है। यहाँ कुछ सामान्य विकल्प हैं:1. Indent
यह विकल्प आउटपुट JSON स्ट्रिंग में इंडेंटेशन के लिए उपयोग होने वाली स्पेस की संख्या निर्दिष्ट करता है। उदाहरण:
2. Sort_keys
यह विकल्प निर्दिष्ट करता है कि आउटपुट JSON स्ट्रिंग में कुंजियाँ वर्णक्रमानुसार क्रमबद्ध की जाएँ या नहीं। उदाहरण:
3. Separators
यह विकल्प आपको आउटपुट JSON स्ट्रिंग में उपयोग किए जाने वाले सेपरेटर्स निर्दिष्ट करने देता है। separators पैरामीटर दो स्ट्रिंग्स का एक ट्यूपल लेता है, जहाँ पहली स्ट्रिंग JSON ऑब्जेक्ट के की-वैल्यू पेयर्स के बीच का सेपरेटर है, और दूसरी स्ट्रिंग JSON एरे में आइटम्स के बीच का सेपरेटर है। उदाहरण:
Python उदाहरण - APIs में JSON डेटा
फ़ॉर्मैटेड आउटपुट:
यह कोड Python में
requestsलाइब्रेरी औरjsonलाइब्रेरी का उपयोग करके URL "https://jsonplaceholder.typicode.com/posts" पर अनुरोध भेजता है और डेटा प्राप्त करता है।requests.get(url)पंक्ति वास्तविक अनुरोध करती है और प्रतिक्रिया कोresponseवैरिएबल में संग्रहीत करती है।पंक्ति
if response.status_code == 200:जाँचती है कि प्रतिक्रिया कोड 200 है या नहीं, जो दर्शाता है कि अनुरोध सफल रहा। यदि अनुरोध सफल होता है, तो कोड json.loads() मेथड का उपयोग करके प्रतिक्रिया टेक्स्ट को Python डिक्शनरी में लोड करता है और उसे data वैरिएबल में संग्रहीत करता है।यदि आप इस विषय के बारे में और सीखना चाहते हैं, तो हमारा ट्यूटोरियल देखें Web APIs, Python Requests & Python में HTTP रिक्वेस्ट करना।
Python में JSON प्रदर्शन का अनुकूलन
जब आप Python में बड़े पैमाने पर JSON डेटा के साथ काम करते हैं, तो कोड के प्रदर्शन को अनुकूलित करना महत्वपूर्ण है ताकि यह कुशलतापूर्वक चले। यहाँ Python में JSON प्रदर्शन को अनुकूलित करने के लिए कुछ सुझाव दिए गए हैं:
cjsonयाujsonलाइब्रेरीज़ का उपयोग करें। ये लाइब्रेरीज़ Python की मानक JSON लाइब्रेरी की तुलना में तेज़ हैं और JSON सीरियलाइज़ेशन और डीसीरियलाइज़ेशन के प्रदर्शन में उल्लेखनीय सुधार कर सकती हैं।JSON फ़ॉर्मेट की सीमाएँ
हालाँकि कई अनुप्रयोगों में डेटा विनिमय के लिए JSON एक लोकप्रिय फ़ॉर्मेट है, कुछ इम्प्लीमेंटेशन सीमाएँ हैं जिनसे अवगत रहना चाहिए:
JSON डेटा के साथ काम करते समय इन इम्प्लीमेंटेशन सीमाओं से अवगत रहना महत्वपूर्ण है, ताकि यह सुनिश्चित किया जा सके कि फ़ॉर्मेट आपकी आवश्यकताओं के अनुरूप है और सीरियलाइज़ेशन, डीसीरियलाइज़ेशन और डेटा प्रतिनिधित्व में संभावित समस्याओं से बचा जा सके।
निष्कर्ष
JSON आधुनिक वेब विकास में डेटा विनिमय के लिए एक बहुमुखी और व्यापक रूप से उपयोग किया जाने वाला फ़ॉर्मेट है, और Python JSON डेटा के साथ काम करने के लिए शक्तिशाली टूल्स का सेट प्रदान करता है। चाहे आप API बना रहे हों या क्लाइंट-साइड वेब अनुप्रयोगों के साथ काम कर रहे हों, Python में JSON की बुनियादी समझ किसी भी आधुनिक डेवलपर के लिए आवश्यक कौशल है। इस ट्यूटोरियल में बताई गई तकनीकों में निपुण होकर, आप Python में JSON डेटा के साथ काम करने और इस सशक्त डेटा इंटरचेंज फ़ॉर्मेट का लाभ उठाते हुए मजबूत, स्केलेबल अनुप्रयोग बनाने की दिशा में अच्छी तरह अग्रसर होंगे।
यदि आप सामान्य स्टोरेज फ़ॉर्मेट्स में रखे गए डेटा को इम्पोर्ट करने के लिए पाइपलाइंस बनाना सीखना चाहते हैं, तो हमारा Streamlined Data Ingestion with pandas कोर्स देखें। आप pandas, जो एनालिटिक्स के लिए एक प्रमुख Python लाइब्रेरी है, का उपयोग करके विभिन्न स्रोतों से डेटा प्राप्त करेंगे, जिनमें सर्वे रेस्पॉन्स की स्प्रेडशीट, सार्वजनिक सेवा अनुरोधों का डेटाबेस और एक लोकप्रिय रिव्यू साइट का API शामिल है।