मुझे अजगर के साथ JSON को पार्स करते समय समस्याएं आ रही हैं, और अब मैं फंस गया हूं।
समस्या यह है कि मेरे JSON की इकाइयां हमेशा समान नहीं होती हैं। JSON है कुछ की तरह:पायथन के साथ JSON पार्सिंग: खाली फ़ील्ड
"entries":[
{
"summary": "here is the sunnary",
"extensions": {
"coordinates":"coords",
"address":"address",
"name":"name"
"telephone":"123123"
"url":"www.blablablah"
},
}
]
मैं, JSON के माध्यम से स्थानांतरित कर सकते हैं उदाहरण के लिए:
for entrie in entries:
name =entrie['extensions']['name']
tel=entrie['extensions']['telephone']
समस्या आता है क्योंकि कभी कभी, JSON सभी "फील्ड" नहीं है, उदाहरण के लिए, telephone
फ़ील्ड, कभी-कभी गायब है, इसलिए, स्क्रिप्ट KeyError
के साथ विफल हो जाती है, क्योंकि इस प्रविष्टि में कुंजी टेलीफोन गुम है।
तो, मेरा प्रश्न: मैं इस स्क्रिप्ट को कैसे चला सकता हूं, एक रिक्त स्थान छोड़कर टेलीफोन गुम है? मैं के साथ की कोशिश की है:
if entrie['extensions']['telephone']:
tel=entrie['extensions']['telephone']
लेकिन मुझे लगता है ठीक नहीं है। बजाय एक KeyError
जुटाने की जब कुंजी नहीं मिला है
entries['extensions'].get('telephone')
get
दूसरा तर्क (डिफ़ॉल्ट, None
) वापस आ जाएगी:
अच्छा, मैं इस बेहतर तो 'defaultdict चाहते 'क्योंकि '__missing__' विधि के अंदर एक संभावित बग पकड़ने के लिए कुछ तर्क जोड़ने में सक्षम होगा। 'डिफॉल्टडिक्ट' के साथ मैं हमेशा क्रिंग करता हूं क्योंकि जब मैं टाइपो बनाता हूं तो मुझे एक KeyError नहीं मिलेगा। –