首页 > 解决方案 > json响应中的访问字段

问题描述

我正在尝试从 API 请求中提取特定字段,稍后我会将其用于另一项任务。基本上需要自动化这个请求,这样我才能跟上远程机器的时间戳。

我可以使用我创建的这个脚本获取 json 列表:

from datetime import datetime
from requests.auth import HTTPBasicAuth
import requests
import json

response = requests.get("https://$hostname/api/profiler/1.13/reporting/timestamps.json", verify=False, auth=HTTPBasicAuth("$username", "$password"))

time = response.json()

print(json.dumps(time, indent=4, sort_keys=True))

这是回应:

[
    {
        "data_resolution": "min",
        "datasource": "TRAFFIC",
        "end_time": 1591793520,
        "start_time": 0
    },
    {
        "data_resolution": "day",
        "datasource": "TRAFFIC",
        "end_time": 1591743600,
        "start_time": 0
    },
    {
        "data_resolution": "15mins",
        "datasource": "SERVICE",
        "end_time": 1591793100,
        "start_time": 0
    },
    {
        "data_resolution": "flow",
        "datasource": "TRAFFIC",
        "end_time": 1591793520,
        "start_time": 0
    },
    {
        "data_resolution": "5mins",
        "datasource": "TRAFFIC",
        "end_time": 1591793400,
        "start_time": 0
    },
    {
        "data_resolution": "6hours",
        "datasource": "TRAFFIC",
        "end_time": 1591786800,
        "start_time": 0
    },
    {
        "data_resolution": "hour",
        "datasource": "TRAFFIC",
        "end_time": 1591790400,
        "start_time": 0
    },
    {
        "data_resolution": "15mins",
        "datasource": "TRAFFIC",
        "end_time": 1591793100,
        "start_time": 0
    },
    {
        "data_resolution": "min",
        "datasource": "FDS_TRAFFIC",
        "end_time": 1591793520,
        "start_time": 1587220140
    },
    {
        "data_resolution": "5mins",
        "datasource": "FDS_TRAFFIC",
        "end_time": 1591793400,
        "start_time": 1587219900
    },
    {
        "data_resolution": "hour",
        "datasource": "FDS_TRAFFIC",
        "end_time": 1591790400,
        "start_time": 1587218400
    }
]

我需要提取这个确切的字段(特别是结束时间字段):

{
        "data_resolution": "flow",
        "datasource": "TRAFFIC",
        "end_time": 1591793520,
        "start_time": 0
    },

我似乎无法提取该字段。

标签: pythonjsonapirest

解决方案


解决方案是遍历 json 响应list

后:time = response.json()

for entry in time:
    if entry.get('data_resolution') == 'flow':
        end_time = entry['end_time']

推荐阅读