Как читать JSON (в указанном формате)? - PullRequest
0 голосов
/ 08 января 2019

Я должен проанализировать и получить только значение поля 'id' (т.е. в данном случае 13) из приведенного ниже ответа JSON. Мой ответ JSON будет в следующем формате. Это политики получения вызова nessus

{'policies': [{'creation_date': 1546583582,
               'description': 'New Scan',
               'has_credentials': 0,
               'id': 13}]}

Мой код:

import requests
from first import *
url = 'https://localhost:8834/policies'
headers = {'X-Cookie':mys()}
response = requests.get(url, headers=headers, verify=False)
resp = response.json()
for k,v in resp.items():
    print (v)

Код ответа:

[{'creation_date': 1546583582,'description': 'New Scan','has_credentials': 0,'id': 13}]

Я не уверен, как написать код для получения результата в виде ожидаемого ответа - 'id' : 13 или просто 13.

Ответы [ 2 ]

0 голосов
/ 08 января 2019

В случае, если у вас есть несколько политик и вы хотите извлечь идентификаторы в список, вы можете использовать понимание списка, например [policy.get('id') for policies in resp.values() for policy in policies] таким образом вы получите список идентификаторов

альтернатива циклу:

for policies in resp.values(): for policy in policies: print(policy.get('id'))

0 голосов
/ 08 января 2019

Вы можете сделать это одним из следующих способов:

resp = {'policies': [{'creation_date': 1546583582,
                      'description': 'New Scan',
                      'has_credentials': 0,
                      'id': 13}]}

for k,v in resp.items():
    print(v[0]['id'])  # -> 13

# or

print(resp.popitem()[1][0]['id'])  # -> 13
...