Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果键值匹配,则解析JSON数据并在Python中打印键值_Python_Json_Parsing - Fatal编程技术网

如果键值匹配,则解析JSON数据并在Python中打印键值

如果键值匹配,则解析JSON数据并在Python中打印键值,python,json,parsing,Python,Json,Parsing,我对JSON解析非常陌生。以下是我的JSON: [ { "description": "Newton", "exam_code": { "date_added": "2015-05-13T04:49:54+00:00", "description": "Production", "exam_tags": [ {

我对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打印描述

如果名称值为操作系统,则打印说明


请帮助我了解如何进行JSON解析?

考虑到您已经从某个地方读取了JSON字符串,无论是文件、stdin还是任何其他源

实际上,您可以通过执行以下操作将其反序列化为Python对象:

import json

# ...

json_data = json.loads(json_str)
其中
json\u str
是要解析的json字符串

在您的情况下,
json\u str
将被反序列化为Python
列表
,因此您可以像通常使用
列表
一样对其执行任何操作

当然,这包括迭代元素:

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)


在Python中处理JSON,光是stackoverflow就有上百个好问题。在获得合格的帮助之前,您必须进行更多的研究,并从自己的尝试开始。如果您对这两种情况都做相同的操作,为什么需要
if
?我只需要1 if条件。
# Loading from stdin

import json, sys
json_data = json.load(sys.stdin)