我对JSON解析非常陌生。以下是我的JSON:
[
{
"description": "Newton",
"exam_code": {
"date_added": "2015-05-13T04:49:54+00:00",
"description": "Production",
"exam_tags": [
{
"date_added": "2012-01-13T03:39:17+00:00",
"descriptive_name": "Production v0.1",
"id": 1,
"max_count": "147",
"name": "Production"
}
],
"id": 1,
"name": "Production",
"prefix": "SA"
},
"name": "CM"
},
{
"description": "Opera",
"exam_code": {
"date_added": "2015-05-13T04:49:54+00:00",
"description": "Production",
"test_tags": [
{
"date_added": "2012-02-22T12:44:55+00:00",
"descriptive_name": "Production v0.1",
"id": 1,
"max_count": "147",
"name": "Production"
}
],
"id": 1,
"name": "Production",
"prefix": "SA"
},
"name": "OS"
}
]
在这里,我试图查找名称值是否为 CM 打印说明值。
如果名称值为 OS ,则打印说明值。
请帮助我了解如何完成JSON解析?
答案 0 :(得分:-1)
考虑到您已经从某个位置读取了JSON字符串,可以是文件,stdin或任何其他来源。
您实际上可以通过执行以下操作将其反序列化为Python对象:
import json
# ...
json_data = json.loads(json_str)
json_str
是您要解析的JSON字符串。
在您的情况下,json_str
将反序列化为Python list
,因此您可以像通常使用list
一样对它进行任何操作。
当然,这包括遍历元素:
for item in json_data:
if item.get('name') in ('CM', 'OS'):
print(item['description'])
如您所见,json_data
中的项目已反序列化为dict
,因此您可以使用dict
操作访问实际字段。
如果您有权访问文件处理程序/描述符或流,也可以直接从源中反序列化JSON:
# Loading from a file
import json
with open('my_json.json', 'r') as fd:
# Note that we're using json.load, not json.loads
json_data = json.load(fd)
# Loading from stdin
import json, sys
json_data = json.load(sys.stdin)