2012-02-01 19 views
7

所以我有一个Python代码至极返回一个JSON字符串像这样的:如何在Python中打印特定的JSON值?

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

我想要做的就是打印和/或为了使用它返回(在Python)"value 3"。还要将它分配给一个变量,以便稍后可以使用它。

我该怎么做?

+0

对不起,错误的代码!日Thnx! – Jmlevick 2012-02-01 09:57:37

+0

注意:我正在使用“simplejson”模块来解析数据 – Jmlevick 2012-02-01 10:01:56

+0

您的输入仍然不是有效的JSON。 'value1'和'value4'必须放在引号内。即使'simplejson'也不能解码你的输入。 – 2012-02-01 10:02:09

回答

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”模块来解析数据,而我的字符串就像我的问题中最近编辑的那样......你的答案是否适用?因为我使用的是simplejson.loads(datavariable) – Jmlevick 2012-02-01 10:01:15

+0

谢谢!这完美无缺地为我想实现的目标而努力! – Jmlevick 2012-02-01 10:10:58

+0

我可以阅读的任何教程,以便更熟悉从Python中的JSON字符串读取某些值? – Jmlevick 2012-02-01 10:21:16

3

OK,我想你的JSON看起来是这样的(注意每个value围绕"):

{"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”模块来解析数据,而我的字符串就像我的问题中最近编辑的那样......你的答案是否适用?因为我使用simplejson.loads(数据变量) – Jmlevick 2012-02-01 10:00:33