【问题标题】:Parsing JSON data if a key value is matched and print a key value in Python如果键值匹配,则解析 JSON 数据并在 Python 中打印键值
【发布时间】:2018-09-19 12:23:12
【问题描述】:

我对 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"
    }
]

这里我正在尝试查找 name 值是否为 CM 打印 description 值。

如果 name 值为 OS,则打印 description 值。

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

【问题讨论】:

  • 单单在stackoverflow上就必须有一百个关于在Python中处理JSON的好问题。在您在这里获得合格的帮助之前,您必须做更多的研究并开始自己的尝试。
  • 如果您对两种情况都做同样的事情,为什么还需要if
  • 这里的条件我只需要1个。

标签: python json parsing


【解决方案1】:

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

您实际上可以通过以下方式将其反序列化为 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)

【讨论】:

    猜你喜欢
    • 2015-04-25
    • 1970-01-01
    • 2015-05-18
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 2016-01-18
    • 1970-01-01
    相关资源
    最近更新 更多