Python में JSON को पार्स करने के आसान चरण

1 अक्टूबर 2024
4 मिनट पढ़ें
AI द्वारा जनरेट किया गया सारांश:

JSON का अर्थ है JavaScript Object Notation। यह न केवल हल्का है बल्कि इंसानों के लिए पढ़ना और लिखना भी आसान है। इसी तरह, मशीनों के लिए इसे पार्स और जनरेट करना सरल होता है। APIs, कॉन्फ़िग फ़ाइलों या संग्रहीत जानकारी के अन्य स्रोतों से डील करते समय पार्सिंग महत्वपूर्ण हो जाती है, खासकर किसी भी Python डेवलपर के लिए। यह लेख आपको Python के मॉड्यूल का उपयोग करते हुए JSON पार्स करने की मूल बातें समझाता है, जिसमें json.dump का उपयोग करके सामग्री को सेव करने का तरीका भी शामिल है।

JSON और उसकी संरचना को समझना

JSON विवरणों को कुंजी-मूल्य (key-value) जोड़ों में संरचित करता है। यहां एक ऑब्जेक्ट का मूल उदाहरण दिया गया है:


{
    "name": "Alice",
    "age": 30,
    "is_student": false,
    "courses": ["Math", "Science"]
}

यह Python JSON पार्सिंग उदाहरण सामान्य चीज़ों को शामिल करता है: एक स्ट्रिंग, नंबर, बूलियन, और एक एरे। इस संरचना से परिचित होना Python में काम करना बहुत आसान बना देता है।

Python में JSON के साथ इंटरैक्ट करना

Python में बिल्ट-इन मॉड्यूल का उपयोग करके JSON स्ट्रिंग को आसानी से पार्स किया जा सकता है। इस मॉड्यूल में ऐसे मेथड्स शामिल हैं जैसे कि json.loads() स्ट्रिंग से पढ़ने के लिए, और json.load() फ़ाइल से पढ़ने के लिए। इसके विपरीत, json.dumps() और json.dump Python का उपयोग क्रमशः जानकारी को स्ट्रिंग और फ़ाइल में लिखने के लिए किया जाता है।

JSON डेटा पढ़ना

आइए देखें कि JSON डेटा कैसे पढ़ा जाए, जिसे हम आगे चर्चा करेंगे।

स्ट्रिंग से JSON पढ़ना

अगर आप Python में JSON पढ़ना चाहते हैं, तो json.loads() का उपयोग करके स्ट्रिंग को पार्स करें और इसे Python ऑब्जेक्ट में बदलें:


import json

json_string = '{"name": "Alice", "age": 30, "is_student": false, "courses": ["Math", "Science"]}'
data = json.loads(json_string)

print(data)

आउटपुट:

1.png

फ़ाइल से JSON निकालना

फ़ाइल से जानकारी निकालने के लिए, इस विधि का उपयोग करें: json.load() और Python में एक JSON फ़ाइल खोलें:


import json

with open('data.json', 'r') as file:
    data = json.load(file)

print(data)

आउटपुट:

2.png

JSON डेटा लिखना

लिखने से पहले, अक्सर आपको मौजूदा जानकारी को पढ़ना या लोड करना पड़ता है — और यही वह जगह है जहां Python load JSON फ़ाइल विधि उपयोगी होती है। एक बार जानकारी सही से लोड हो जाने पर, आप इसे संशोधित कर सकते हैं और विभिन्न प्रारूपों में वापस लिख सकते हैं।

स्ट्रिंग में JSON लिखना

जानकारी को स्ट्रिंग में लिखने के लिए, json.dumps Python विधि का उपयोग करें:


import json

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False,
    "courses": ["Math", "Science"]
}

json_string = json.dumps(data)
print(json_string)

आउटपुट:

3.png

फ़ाइल में JSON लिखना

इस फ़ाइल का विवरण लिखने के लिए, json.dump Python मेथड का उपयोग करें:


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'])

आउटपुट:

4.png

कस्टम JSON एन्कोडर

भाषा सभी कस्टम ऑब्जेक्ट्स को अपने आप 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)

आउटपुट:

5.png

कस्टम 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)

आउटपुट:

6.png

सामान्य समस्याओं को संभालना

डेटा के साथ काम करते समय कई सामान्य त्रुटियां हो सकती हैं, विशेष रूप से जब आप पार्स, जनरेट या संरचित सामग्री तक पहुंचते हैं। एक भरोसेमंद Python 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}")
p> आउटपुट:

7.png

मिसिंग कीज़ को संभालना

कभी-कभी, कंटेंट में वे सभी कीज़ शामिल नहीं होतीं जिनकी आप अपेक्षा करते हैं। 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 हैंडलिंग का व्यावहारिक उदाहरण

वेब स्क्रैपिंग में आमतौर पर उन सेवाओं से डेटा पुनः प्राप्त करना शामिल होता है जो प्राप्त जानकारी लौटाती हैं। नीचे दिया गया उदाहरण requests लाइब्रेरी का उपयोग करता है और एंडपॉइंट https://httpbin.org/anything से कनेक्ट करता है।

शुरू करने से पहले, यह जांच लें कि आपने requests पैकेज इंस्टॉल किया है:


pip install requests

जब आप स्ट्रक्चर्ड कंटेंट के साथ काम कर रहे होते हैं, तो requests लाइब्रेरी चीजों को आसान बनाने में मदद कर सकती है। बस requests.get(url) के माध्यम से एक GET अनुरोध और URL जारी करें। फिर आप response.json() से प्रतिक्रिया को पार्स कर सकते हैं। वहाँ से, हेडर, यूज़र एजेंट, ओरिजिन, या रिक्वेस्ट URL जैसी विशिष्ट जानकारी प्राप्त करना और उन्हें आवश्यकता अनुसार प्रिंट करना सरल हो जाता है।

कोड में मजबूत एरर हैंडलिंग शामिल है; यह json.JSONDecodeError को पकड़ता है जब डिकोडिंग में कोई त्रुटि होती है, और KeyError को तब जब कोई विशिष्ट कुंजी मौजूद नहीं होती। इससे प्रोग्राम को ‘कोई डेटा नहीं’ जैसी क्रैश स्थितियों से सुरक्षा मिलती है। ऐसी कोड मजबूती इसे वास्तविक वेब स्क्रैपिंग कार्यों को पूरी तरह से संभालने में सक्षम बनाती है।


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")

8.png

हर डेवलपर को यह जानना चाहिए कि पायथन में json फ़ाइल को कैसे पार्स किया जाए। इस मैनुअल में बताए गए मॉड्यूल और सबसे अच्छे तरीके के साथ, आप तेज़ी से पढ़ने, लिखने और डिबग करने में सक्षम होंगे। इसका मतलब है कि अपने कोड का नियमित रूप से परीक्षण करना और बेहतर प्रदर्शन करने के लिए सही टूल और नवीनतम सुविधाओं का उपयोग करना। यह गाइड पायथन में json डेटा पार्स करने पर केंद्रित है ताकि आप इन कार्यों में कुशलता प्राप्त कर सकें।

जब आप वेब स्क्रैपिंग करते हैं, तो पार्सिंग आवश्यक हो जाती है क्योंकि वेब API से आने वाला कंटेंट अक्सर इस प्रारूप में होता है। इसे प्रोसेस और मैनीपुलेट करने में कुशल होना आपको विभिन्न स्रोतों से मूल्यवान जानकारी कुशलतापूर्वक निकालने की अनुमति देता है।

निष्कर्ष

पार्सिंग किसी भी डेवलपर के लिए एक महत्वपूर्ण कौशल है जो वेब API, कॉन्फ़िग फ़ाइलों या बाहरी स्रोतों के साथ काम करता है। जानकारी को संभालना — चाहे स्ट्रिंग, फ़ाइल से पढ़ना हो, संरचित आउटपुट लिखना हो, या नेस्टेड और कस्टम ऑब्जेक्ट्स से निपटना हो — पायथन के बिल्ट-इन मॉड्यूल के माध्यम से सरल हो जाता है। डेवलपर्स json.load(), json.loads(), json.dump(), json.dumps() पायथन मेथड्स का उपयोग करना सीख सकते हैं और सामान्य समस्याओं से निपटने, कस्टम एनकोडर या डिकोडर लागू करने और जानकारी की इंटरैक्शन के लिए मजबूत और भरोसेमंद एप्लिकेशन बनाने के तरीके सीख सकते हैं। चूंकि यह प्रारूप जानकारी के आदान-प्रदान के लिए एक वेब मानक है, इसलिए ये कौशल स्क्रैपिंग, कंटेंट मैनीपुलेशन और API के माध्यम से कई सेवाओं को एकीकृत करने में मूल्यवान हैं। सरल पायथन कोड का उपयोग करके json फ़ाइल पढ़ना किसी भी प्रोजेक्ट के लिए पायथन में json फ़ाइल पार्स करना सुलभ बनाता है, जबकि json.dump पायथन सामग्री को कुशलतापूर्वक वापस सहेजने की अनुमति देता है।

लेख की सामग्री: