2011-04-10 14 views
17

मैं मैं उन अलग-अलग मान कैसे परिवर्तित कर सकते हैं तार JSONJSON-> अजगर में स्ट्रिंग

[{u'status': u'active', u'due_date': None, u'group': u'later', u'task_id': 73286}] 

की इस पंक्ति मिल कहो? तो मैं कह सकता हूँ

Print Status 

और यह रिटर्न

active 
+0

http://docs.python.org/tutorial/datastructures.html –

उत्तर

23

यह एक "JSON की लाइन" नहीं है के रूप में एक बाहरी स्रोत से प्राप्त किया। यह json.loads(external_JSON_string) के परिणाम की तरह दिखता है। Print Status काम नहीं करेगा; आपका मतलब print status है।

>>> import json 
>>> json.dumps(result) 
'[{"status": "active", "due_date": null, "group": "later", "task_id": 73286}]' 
>>> 

संपादित करें:

>>> result = [{u'status': u'active', u'due_date': None, u'group': u'later', u'task_id': 73286}] 
>>> print result[0]['status'] 
active 

यह एक "JSON की लाइन" कैसा दिखता है, तो अजगर 2.5 का उपयोग कर, import simplejson as json बजाय import json का उपयोग करें। ऐसा करके अपने कोड में थोड़ा और अधिक भविष्य प्रूफ करें:

सभी की
try: 
    import json 
except ImportError: 
    import simplejson as json 
+0

तो क्या होगा वह दिखा रहा है कि यह एक रेखा नहीं है JSON - तो उसको स्ट्रिंग करने के लिए कोई क्या उपयोग करता है? क्या वह पहले से ही एक स्ट्रिंग है? क्या ऐसा कुछ है जिसे इसे स्ट्रिंग के रूप में इलाज करने के लिए किया जाना चाहिए (यानी "अन-यूनिकोड" उदाहरण के लिए)? – Praxiteles

0
import simplejson 
_dict = simplejson.loads(json_data) 
for entry in _dict: 
# loop over list 
    print entry.get('status','Failure') 
    # Find key in dict/entry 
+0

मैं इस त्रुटि मिलती है: फ़ाइल "/Library/Python/2.5/site- पैकेज/simplejson/__ init__.py ", लाइन 385, भार में वापसी _default_decoder.decode फ़ाइल" /Library/Python/2.5/site-packages/simplejson/decoder.py ", लाइन 402, डीकोड ओबीजे में , end = self.raw_decode (s, idx = _w (s, 0) .end()) टाइप एरर: अपेक्षित स्ट्रिंग या बफर – HankSmackHood

+0

-1 "json_data" [सरल] json.loads का परिणाम है –

4

सबसे पहले, कि JSON के रूप में किया गया था पहले ही बताया नहीं है - यह पहले से ही अजगर है।

मुझे लगता है कि आप चाहते हैं कि dict की चाबियाँ स्वचालित रूप से स्थानीय चर में बदल जाएंगी। यह एक वास्तव में बुरा विचार होगा हालांकि सिद्धांत रूप में, यह locals() का उपयोग कर सकता है:

result = [{u'status': u'active', u'due_date': None, u'group': u'later', u'task_id': 73286}] 
for k, v in result[0].items(): 
    locals() [k] = v 
print status # prints active 

कुछ समस्याओं:

  • आपका कुंजी कुछ मौजूदा स्थानीय चर
  • कुंजी यूनिकोड हो सकता है के ऊपर लिख सकता है , आप चर नामों का उपयोग कैसे करेंगे?

, जैसा कि python docs में बताया गया है, स्थानीय() को संशोधित नहीं किया जाना चाहिए।

संक्षेप में: यह इस तरह कार्य करें:

print result[0]['status'] 
+0

प्रिंट परिणाम [0] ['xxxx'] मेरी समस्या के लिए काम किया सी: धन्यवाद! – Adjam

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