如何在Python中打印特定的JSON值?

Jml*_*ick 9 python json

所以我有一个Python代码,它返回一个像这样的JSON字符串:

'{"X": "value1", "Y": "value2", "Z": [{"A": "value3", "B": "value4"}]}'
Run Code Online (Sandbox Code Playgroud)

我想要做的是打印和/或返回(在Python中)"value 3"以便使用它.同时将其分配给变量,以便稍后我可以使用它.

我怎样才能做到这一点?

Tim*_*ker 15

>>> 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'
Run Code Online (Sandbox Code Playgroud)


小智 5

好的,我假设你的 JSON 看起来像这样(注意"每个周围value):

{"X":"value1", "Y":"value2", "Z":[{"A":"value3", "B":"value4"}]}
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

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

编辑:甚至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
Run Code Online (Sandbox Code Playgroud)