2012-02-01 10 views
7

तो मैं एक अजगर कोड है जो इस तरह JSON स्ट्रिंग रिटर्न है:पायथन में विशेष JSON मान कैसे मुद्रित करें?

'{"X": "value1", "Y": "value2", "Z": [{"A": "value3", "B": "value4"}]}' 

मुझे क्या करना चाहते हैं प्रिंट और/या लौटने के क्रम में इसका इस्तेमाल करने के लिए (अजगर में) "value 3" है। इसे एक चर के लिए भी असाइन करें ताकि मैं इसके साथ बाद में काम कर सकूं।

मैं यह कैसे कर सकता हूं?

+0

कोड पर गलती के लिए खेद है !! thnx! – Jmlevick

+0

नोट: मैं डेटा को पार्स करने के लिए "सरलजॉन" मॉड्यूल का उपयोग कर रहा हूं – Jmlevick

+0

आपका इनपुट अभी भी कोई वैध JSON नहीं है। 'value1' और' value4' उद्धरण के अंदर होना चाहिए। यहां तक ​​कि 'simplejson' भी आपके इनपुट को डीकोड नहीं कर सकता है। –

उत्तर

12
>>> import json 
>>> a = json.loads('{"X":"value1","Y":"value2","Z":[{"A":"value3","B":"value4"}]}') 
>>> a 
{'Y': 'value2', 'X': 'value1', 'Z': [{'A': 'value3', 'B': 'value4'}]} 
>>> a["Z"][0]["A"] 
'value3' 
+0

ओह! दो चीजें: मैं डेटा को पार्स करने के लिए "सरलजॉन" मॉड्यूल का उपयोग कर रहा हूं, और मेरी स्ट्रिंग हाल ही में मेरे प्रश्न में संपादित की गई है ... क्या आपका उत्तर लागू होता है? क्योंकि मैं simplejson.loads (डेटावेयर) का उपयोग कर रहा हूं – Jmlevick

+0

धन्यवाद! यह जो मैं प्राप्त करने की कोशिश कर रहा था उसके लिए यह बेकार ढंग से काम किया! – Jmlevick

+0

पायथन में JSON तारों से कुछ मान पढ़ने के साथ अधिक परिचित होने के लिए मैं पढ़ सकता हूं? – Jmlevick

3

ठीक है, मुझे लगता है यह (ध्यान दें प्रत्येक value आसपास ") की तरह अपने JSON दिखता है:

{"X":"value1", "Y":"value2", "Z":[{"A":"value3", "B":"value4"}]} 

तो फिर तुम यह कर सकते हैं:

import json 
j = '{"X":"value1", "Y":"value2", "Z":[{"A":"value3", "B":"value4"}]}' 
k = json.loads(j) 
assert k["Z"][0]["A"] == "value3" 

संपादित करें: भी simplejson आपके मूल इनपुट को डीकोड नहीं कर सकता है।

>>> import simplejson 
>>> s1 = '{"X":value1,"Y":"value2","Z":[{"A":"value3","B":value4}]}' 
>>> simplejson.loads(s1) 
simplejson.decoder.JSONDecodeError: No JSON object could be decoded: line 1 column 0 (char 0) 
>>> s2 = '{"X":"value1", "Y":"value2", "Z":[{"A":"value3", "B":"value4"}]}' 
>>> print simplejson.loads(s2)["Z"][0]["A"] 
value3 
+0

ओह! दो चीजें: मैं डेटा को पार्स करने के लिए "सरलजॉन" मॉड्यूल का उपयोग कर रहा हूं, और मेरी स्ट्रिंग हाल ही में मेरे प्रश्न में संपादित की गई है ... क्या आपका उत्तर लागू होता है? क्योंकि मैं simplejson.loads (डेटावायर करने योग्य) का उपयोग कर रहा हूँ – Jmlevick

संबंधित मुद्दे