2011-04-10 41 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