Разбор данных JSON, если значение ключа совпадает, и вывод значения ключа в Python - PullRequest
0 голосов
/ 19 сентября 2018

Я очень новичок в разборе 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 print description value.

Если имя значение равно ОС , выведите описание значение.

Пожалуйста, помогите мне понять, как можно выполнить анализ JSON?

1 Ответ

0 голосов
/ 19 сентября 2018

Учитывая, что вы уже прочитали строку 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...