Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन JSONDecodeError व्याख्या और समाधान

पायथन JSONDecodeError

कई डेवलपर्स प्रोग्राम से डेटा को JSON फाइल में संग्रहीत करते हैं; अन्य प्रोग्राम API को संदर्भित करते हैं जिनके लिए JSON के साथ काम करने की आवश्यकता होती है। वास्तव में, आपको JSON, या इसके पायथन समकक्ष, शब्दकोशों के लिए उपयोग के मामले ढूंढने में कोई परेशानी नहीं होगी।

जब आप JSON डेटा के साथ काम कर रहे होते हैं तो आपको JSONDecodeError का सामना करना पड़ सकता है। इस गाइड में, हम JSONDecodeError के कारणों और इस त्रुटि को कैसे ठीक करें, इस बारे में बात करने जा रहे हैं।

पायथन JSONDecodeError

पायथन JSONDecodeError इंगित करता है कि आपके JSON डेटा के फॉर्मेट करने के तरीके में कोई समस्या है। उदाहरण के लिए, आपके JSON डेटा में कर्ली ब्रैकेट गायब हो सकता है, या ऐसी कुंजी हो सकती है जिसका कोई मान नहीं है, या सिंटैक्स का कोई अन्य टुकड़ा गायब हो सकता है।

JSONDecodeError को पूरी तरह से ठीक करने के लिए, आपको JSON फाइल में जाकर देखना होगा कि समस्या क्या है। यदि आप भविष्य में कई समस्याओं का सामना करने की आशा करते हैं, तो आप अपने JSONDecodeError को संभालने के लिए try…except ब्लॉक का उपयोग करना चाह सकते हैं।

JSONDecodeError कीवर्ड के बाद, आपको एक संक्षिप्त विवरण दिखाई देना चाहिए जो त्रुटि के कारण का वर्णन करता है।

सभी ठीक से फॉर्मेट किए गए JSON को इस तरह दिखना चाहिए:

{ "key": "value" }

"value" कोई भी वैध JSON मान हो सकता है, जैसे सूची, स्ट्रिंग, या अन्य JSON ऑब्जेक्ट।

एक उदाहरण परिदृश्य

हम एक प्रोग्राम बना रहे हैं जो JSON ऑब्जेक्ट्स की सूची संग्रहीत करता है जो दर्शाते हैं कि व्यवसाय में कर्मचारियों को कौन से कंप्यूटर जारी किए गए हैं। प्रत्येक JSON ऑब्जेक्ट को इस तरह दिखना चाहिए:

[
    {
        "name": "Employee Name",
        "equip_id": "000"
    }
]

हम इन JSON ऑब्जेक्ट्स को equipment.json नामक फाइल में संग्रहीत करते हैं। फाइल में केवल एक प्रविष्टि है:

[
    {
        "name": "Laura Harper",
        "equip_id" "309"
    }
]

इस डेटा को अपने प्रोग्राम में पढ़ने के लिए, हम json मॉड्यूल का उपयोग कर सकते हैं:

import json
with open("equipment.json") as file:
    data = json.load(file)
print("Equipment data has been successfully retrieved.")

सबसे पहले, हम json मॉड्यूल आयात करते हैं जिसका उपयोग हम JSON फाइल पढ़ने के लिए करते हैं। फिर, हम अपनी JSON फाइल की सामग्री पढ़ने के लिए open() स्टेटमेंट का उपयोग करते हैं। हमारा with स्टेटमेंट चलने के बाद हम कंसोल पर एक संदेश प्रिंट करते हैं जो बताता है कि उपकरण डेटा प्राप्त हो गया है।

आइए अपना कोड चलाएं और देखें क्या होता है:

Traceback (most recent call last):
File "", line 2, in 
File "/usr/lib/python3.8/json/__init__.py", line 293, in load
return loads(fp.read(), File "/usr/lib/python3.8/json/__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.8/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.8/json/decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ':' delimiter: line 4 column 16 (char 47

हमारा कोड एक लंबी त्रुटि लौटाता है। हम JSONDecodeError शब्द के बाद पायथन को हमारे त्रुटि का कारण वर्णन करते हुए देख सकते हैं।

समाधान

हमारा JSONDecodeError हमें बता रहा है कि हमारे JSON डेटा में कोलन (:) गायब है। यह कोलन लाइन चार पर कॉलम 16 पर दिखाई देना चाहिए। यदि हम अपने equipment.json फाइल में इस लाइन के डेटा को देखते हैं, तो हम देख सकते हैं कि हमारा JSON अमान्य है:

"equip_id" "309",

हमारा कोड कोलन गायब है। इस त्रुटि को ठीक करने के लिए, हमें कोलन जोड़ना चाहिए:

"equip_id": "309",

अब जब हमने अपने डेटा के प्रतिनिधित्व के तरीके की समस्या को ठीक कर दिया है, तो हम अपना प्रोग्राम फिर से चलाने का प्रयास कर सकते हैं:

Equipment data has been successfully retrieved.

हमारा कोड सफलतापूर्वक निष्पादित होता है।

वैकल्पिक रूप से, हम इस समस्या को संभालने के लिए try…except हैंडलर का उपयोग कर सकते हैं ताकि यदि हम भविष्य में एक और फॉर्मेटिंग समस्या का सामना करें तो हमारा कोड तुरंत त्रुटि न लौटाए:

import json
try:
    with open("equipment.json") as file:
        data = json.load(file)
    print("Equipment data has been successfully retrieved.")
except json.decoder.JSONDecodeError:
    print("There was a problem accessing the equipment data.")

यदि हमारे JSON डेटा में त्रुटि है, तो यह प्रोग्राम निम्न लौटाएगा:

There was a problem accessing the equipment data.

अन्यथा, प्रोग्राम डेटा पढ़ेगा और फिर कंसोल पर निम्न टेक्स्ट प्रदर्शित करेगा:

Equipment data has been successfully retrieved.

निष्कर्ष

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

क्या आप पायथन कोडिंग के बारे में अधिक सीखने में रुचि रखते हैं? हमारा How to Learn Python गाइड पढ़ें। आपको पायथन सीखने के तरीके पर विशेषज्ञ सलाह और आपके ज्ञान को बनाने में मदद करने के लिए सीखने के संसाधनों की एक सूची मिलेगी।

  1. पायथन डेटा एनालिसिस और विज़ुअलाइज़ेशन (Pandas) पायथन डेटा एनालिसिस और विज़ुअलाइज़ेशन (Pandas)

    Pandas डेटा साइंस और एनालिटिक्स के लिए सबसे लोकप्रिय पायथन लाइब्रेरी है। यह डेटा मैनिपुलेशन, एनालिसिस, और क्लीनिंग के लिए हाई-लेवल अब्स्ट्रैक्शन प्रदान करता है (NumPy पर निर्मित)। इंस्टॉलेशन pip install pandas matplotlib मूल डेटा स्ट्रक्चर्स Series - 1-डायमेंशनल लेबल्ड ऐरे 24]) # मैथ ऑपरेशन्स p

  1. पायथन में डेटा विश्लेषण और विज़ुअलाइज़ेशन पायथन में डेटा विश्लेषण और विज़ुअलाइज़ेशन

    पायथन डेटा विश्लेषण और विज़ुअलाइज़ेशन के लिए कई लाइब्रेरी प्रदान करता है मुख्य रूप से numpy, pandas, matplotlib, seaborn आदि। इस खंड में, हम डेटा विश्लेषण और विज़ुअलाइज़ेशन के लिए pandas लाइब्रेरी पर चर्चा करने जा रहे हैं जो numpy के ऊपर बनी एक ओपन सोर्स लाइब्रेरी है। यह हमें तेजी से विश्लेषण और डे

  1. Python While Loop: परिचय और व्याख्या Python While Loop: परिचय और व्याख्या

    कोडिंग (बेशक) दूसरों की मदद करने के लिए चीजें बनाने के बारे में है। हालांकि, प्रोग्राम और सॉफ्टवेयर बनाने का किसी और चीज की तुलना में दोहराए जाने वाले या जटिल कार्यों को स्वचालित करने से अधिक लेना-देना है। Python का while लूप आपको एक साथ कई कार्यों को स्वचालित करने के लिए कोड के सूट को दोहराने देता