2011-04-10 72 views
17

說我得到這條線JSONJSON->字符串在Python

[{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 – 2011-04-10 21:26:41

回答

23

這不是一個「JSON線」從外部源接收。它看起來像json.loads(external_JSON_string)的結果。另外Print Status將無法​​正常工作;你的意思是print status

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

這是一個 「JSON行」 的模樣:

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

編輯:如果使用的是Python 2.5,使用import simplejson as json代替import json。通過這樣做,使你的代碼多一點面向未來:

所有的
try: 
    import json 
except ImportError: 
    import simplejson as json 
+0

的結果他顯示的不是一行JSON - 那麼人們使用什麼來對其進行串聯?那已經是一個字符串了嗎?是否需要做一些事情來將其視爲一個字符串(即,例如「un-unicode」)? – Praxiteles 2016-08-20 09:07:21

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- packages/simplejson/__init__.py「,第385行加載 return _default_decoder.decode(s) 文件」/Library/Python/2.5/site-packages/simplejson/decoder.py「,第402行,解碼 obj ,end = self.raw_decode(s,idx = _w(s,0).end()) TypeError:期望的字符串或緩衝區 – HankSmackHood 2011-04-10 21:06:37

+0

-1「json_data」是[簡單] json.loads – 2011-04-10 22:40:57

4

首先,這不是JSON作爲已經指出的 - 這是蟒蛇已經。

我認爲你想把字典的鍵自動轉換成局部變量。這將是一個非常糟糕的主意,雖然從理論上講,它使用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 

一些問題:

  • 你的鑰匙可能會覆蓋現有的一些局部變量
  • 密鑰可能是Unicode ,你將如何訪問變量名?

此外,如python docs所述,locals()不應該被修改。

簡而言之:做這樣的:

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

打印結果[0] ['xxxx']爲我的問題工作c:謝謝! – Adjam 2014-03-01 20:41:39