पायथन में JSON को पार्स करने के लिए गाइड

टिप्पणियाँ: 0

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

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

JSON एक पायथन डिक्शनरी के समान, कुंजी-मूल्य जोड़े के रूप में डेटा का प्रतिनिधित्व करता है। यहाँ एक JSON ऑब्जेक्ट का एक मूल उदाहरण है:

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

इस JSON ऑब्जेक्ट में एक स्ट्रिंग, एक नंबर, एक बूलियन और एक सरणी शामिल है। इस संरचना को समझना पायथन में JSON डेटा को पार्सिंग और हेरफेर करने के लिए मौलिक है।

पायथन में JSON के साथ काम करना

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

JSON डेटा पढ़ना

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)

उत्पादन:

1.png

एक फ़ाइल से JSON पढ़ना

एक फ़ाइल से JSON डेटा पढ़ने के लिए, json.load () विधि का उपयोग करें:

import json

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

print(data)

उत्पादन:

2.png

JSON डेटा लिखना

JSON डेटा लिखने के कुछ अलग तरीके हैं:

एक स्ट्रिंग पर 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)

उत्पादन:

3.png

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

एक फ़ाइल में 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 हैंडलिंग

अधिक जटिल डेटा संरचनाओं के साथ काम करते समय नेस्टेड 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 डिकोडर

इसी तरह, 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

सामान्य मुद्दों को संभालना

JSON डेटा के साथ काम करने से कई सामान्य त्रुटियां हो सकती हैं, खासकर जब 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}")

उत्पादन:

7.png

लापता कुंजियों को संभालना

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 पार्सिंग मुद्दे

ब्रेकप्वाइंट सेट करने और अपने 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 हैंडलिंग का व्यावहारिक उदाहरण

वेब स्क्रैपिंग में अक्सर वेब एपीआई से डेटा निकालना शामिल होता है जो 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")

8.png

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

वेब स्क्रैपिंग को आगे बढ़ाते समय, कोई भी JSON को महत्वपूर्ण मानता है, इस तथ्य को देखते हुए कि वेब API से प्राप्त डेटा आमतौर पर JSON के रूप में दिखाई देता है, इसके अलावा, आप विभिन्न वेब स्रोतों से कुशलता से जानकारी निकाल सकते हैं, यदि आप JSON डेटा को पार्स और हेरफेर कर सकते हैं। एक अच्छा तरीका में।

टिप्पणियाँ:

0 टिप्पणियाँ