JSON का मतलब जावास्क्रिप्ट ऑब्जेक्ट नोटेशन है। यह न केवल हल्का है, बल्कि मनुष्यों के लिए पढ़ना और लिखना भी आसान है। इसी तरह, मशीनों को पार्स और उत्पन्न करना आसान लगता है। एपीआई, कॉन्फ़िगरेशन फ़ाइलों, या किसी भी पायथन डेवलपर के लिए संग्रहीत जानकारी के अन्य स्रोतों से डेटा के साथ काम करते समय JSON पार्सिंग बेहद महत्वपूर्ण है। यह लेख आपको पायथन के JSON मॉड्यूल का उपयोग करके JSON को पार्स करने के लिए बुनियादी प्रक्रियाओं के माध्यम से ले जाता है।
JSON एक पायथन डिक्शनरी के समान, कुंजी-मूल्य जोड़े के रूप में डेटा का प्रतिनिधित्व करता है। यहाँ एक JSON ऑब्जेक्ट का एक मूल उदाहरण है:
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"]
}
इस JSON ऑब्जेक्ट में एक स्ट्रिंग, एक नंबर, एक बूलियन और एक सरणी शामिल है। इस संरचना को समझना पायथन में JSON डेटा को पार्सिंग और हेरफेर करने के लिए मौलिक है।
पायथन का JSON मॉड्यूल JSON स्ट्रिंग्स और फ़ाइलों को पार्स करना सरल बनाता है। इस मॉड्यूल में एक स्ट्रिंग से JSON पढ़ने के लिए json.loads () जैसे तरीके शामिल हैं, और एक फ़ाइल से JSON पढ़ने के लिए json.load ()। इसके विपरीत, json.dumps () और json.dump () का उपयोग JSON को क्रमशः एक स्ट्रिंग और एक फ़ाइल में लिखने के लिए किया जाता है।
JSON डेटा पढ़ने के कई तरीके हैं, जिन्हें हम आगे देखेंगे।
एक स्ट्रिंग से JSON डेटा पढ़ने के लिए, json.loads () विधि का उपयोग करें:
import json
json_string = '{"name": "Alice", "age": 30, "is_student": false, "courses": ["Math", "Science"]}'
data = json.loads(json_string)
print(data)
उत्पादन:
एक फ़ाइल से JSON डेटा पढ़ने के लिए, json.load () विधि का उपयोग करें:
import json
with open('data.json', 'r') as file:
data = json.load(file)
print(data)
उत्पादन:
JSON डेटा लिखने के कुछ अलग तरीके हैं:
एक स्ट्रिंग पर JSON डेटा लिखने के लिए, json.dumps () विधि का उपयोग करें:
import json
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Science"]
}
json_string = json.dumps(data)
print(json_string)
उत्पादन:
एक फ़ाइल में JSON डेटा लिखने के लिए, json.dump () विधि का उपयोग करें:
import json
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Science"]
}
with open('data.json', 'w') as file:
json.dump(data, file)
अधिक जटिल डेटा संरचनाओं के साथ काम करते समय नेस्टेड JSON ऑब्जेक्ट आम हैं। पायथन आसानी से इन नेस्टेड संरचनाओं को संभाल सकता है।
import json
nested_json_string = '''
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"],
"address": {
"street": "123 Main St",
"city": "Wonderland"
}
}
'''
data = json.loads(nested_json_string)
print(data['address']['city'])
उत्पादन:
कभी -कभी, आपको कस्टम पायथन ऑब्जेक्ट्स को JSON में बदलने की आवश्यकता होती है। इसके लिए एक कस्टम एनकोडर की आवश्यकता होती है।
import json
class Student:
def __init__(self, name, age, is_student):
self.name = name
self.age = age
self.is_student = is_student
class StudentEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Student):
return obj.__dict__
return super().default(obj)
student = Student("Alice", 30, False)
json_string = json.dumps(student, cls=StudentEncoder)
print(json_string)
उत्पादन:
इसी तरह, JSON डेटा को कस्टम पायथन ऑब्जेक्ट्स में डिकोड करने के लिए, आपको एक कस्टम डिकोडर की आवश्यकता है।
import json
class Student:
def __init__(self, name, age, is_student):
self.name = name
self.age = age
self.is_student = is_student
def student_decoder(dct):
return Student(dct['name'], dct['age'], dct['is_student'])
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
student = json.loads(json_string, object_hook=student_decoder)
print(student.name)
उत्पादन:
JSON डेटा के साथ काम करने से कई सामान्य त्रुटियां हो सकती हैं, खासकर जब JSON डेटा को पार्सिंग, जनरेटिंग, या एक्सेस करना। यहाँ कुछ सबसे आम हैं:
JSON को पार्स करते समय एक सामान्य त्रुटि अमान्य JSON प्रारूप का सामना कर रही है। JSON को कुंजियों और स्ट्रिंग मानों के आसपास दोहरे उद्धरण की आवश्यकता होती है, और कोष्ठक और ब्रेसिज़ के उचित घोंसले के शिकार होते हैं।
import json
invalid_json_string = "{'name': 'Alice', 'age': 30, 'is_student': False}"
try:
data = json.loads(invalid_json_string)
except json.JSONDecodeError as e:
print(f"Invalid JSON format: {e}")
उत्पादन:
JSON डेटा को पार्स करते समय, आप लापता कुंजियों का सामना कर सकते हैं। यदि कोई कुंजी गायब है तो डिफ़ॉल्ट मान प्रदान करने के लिए GET विधि का उपयोग करें।
import json
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
is_student = data.get('is_student', False)
print(is_student)import json
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
is_student = data.get('is_student', False)
print(is_student)
ब्रेकप्वाइंट सेट करने और अपने JSON पार्सिंग कोड को डिबग करने के लिए PDB मॉड्यूल का उपयोग करें।
import json
import pdb
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
pdb.set_trace()
data = json.loads(json_string)
print(data)
वेब स्क्रैपिंग में अक्सर वेब एपीआई से डेटा निकालना शामिल होता है जो JSON प्रतिक्रियाओं को लौटाता है। यहाँ अनुरोध लाइब्रेरी और https://httpbin.org/anyting endpoint का उपयोग करके एक कॉम्पैक्ट उदाहरण है।
सबसे पहले, सुनिश्चित करें कि आपके पास अनुरोध लाइब्रेरी स्थापित है:
pip install requests
यह कोड JSON डेटा को संभालने के लिए HTTP अनुरोधों और JSON के लिए अनुरोध करता है। यह अनुरोधों का उपयोग करके लक्ष्य URL के लिए एक GET अनुरोध भेजता है। (URL) का उपयोग करके JSON प्रतिक्रिया को प्रतिक्रिया करता है। हम हेडर, उपयोगकर्ता एजेंट, मूल और URL जैसे विशेष डेटा को खींचते हैं और प्रिंट करते हैं।
कोड में मजबूत त्रुटि हैंडलिंग होती है; यह JSON.jsondecodeError को कैप्चर करता है जब एक JSON डिकोडिंग त्रुटि होती है, और KeyError जब एक विशिष्ट कुंजी अनुपस्थित होती है, तो परिणामस्वरूप कार्यक्रम को ’NO डेटा’ क्रैश से सुरक्षित कर दिया जाता है। इस तरह की कोड मजबूती इसलिए इसे वास्तविक वेब स्क्रैपिंग कार्यों को पूरी तरह से संभालने में सक्षम बनाती है।
import requests
import json
url = 'https://httpbin.org/anything'
response = requests.get(url)
try:
data = response.json()
# JSON प्रतिक्रिया से विशिष्ट डेटा निकालना
headers = data['headers']
user_agent = headers.get('User-Agent', 'N/A')
origin = data.get('origin', 'N/A')
url = data.get('url', 'N/A')
print(f"User Agent: {user_agent}")
print(f"Origin: {origin}")
print(f"URL: {url}")
except json.JSONDecodeError:
print("Error decoding JSON response")
except KeyError as e:
print(f"Key error: {e} not found in the JSON response")
हर पायथन कोडर को पता होना चाहिए कि कैसे JSON को पार्स करना है। JSON मॉड्यूल और इस मैनुअल द्वारा इसे हाइलाइट करने का सबसे अच्छा तरीका के साथ, आप JSON डेटा को काफी तेजी से पढ़ने, लिखने और डीबग करने में सक्षम होंगे। इसका तात्पर्य है कि आप नियमित रूप से अपने कोड का परीक्षण करेंगे, और बेहतर JSON हैंडलिंग कौशल के लिए पायथन में उपलब्ध सही टूल और अधिकांश वर्तमान सुविधाओं का उपयोग करेंगे।
वेब स्क्रैपिंग को आगे बढ़ाते समय, कोई भी JSON को महत्वपूर्ण मानता है, इस तथ्य को देखते हुए कि वेब API से प्राप्त डेटा आमतौर पर JSON के रूप में दिखाई देता है, इसके अलावा, आप विभिन्न वेब स्रोतों से कुशलता से जानकारी निकाल सकते हैं, यदि आप JSON डेटा को पार्स और हेरफेर कर सकते हैं। एक अच्छा तरीका में।
टिप्पणियाँ: 0