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": "flow",

        "datasource": "TRAFFIC",

        "end_time": 1591793520,

        "start_time": 0

    },

我似乎无法提取该字段。


当年话下
浏览 132回答 3
3回答

开心每一天1111

解决方案是遍历 json 响应:list;后:time = response.json()for entry in time:    if entry.get('data_resolution') == 'flow':        end_time = entry['end_time']

元芳怎么了

from datetime import datetimefrom requests.auth import HTTPBasicAuthimport requestsimport jsonresponse = requests.get("https://10.65.170.112/api/profiler/1.13/reporting/timestamps.json", verify=False, auth=HTTPBasicAuth("admin", "admin"))time = response.json()**for t in time:    end_time = (time[3]["end_time"])**print(end_time)

扬帆大鱼

试试这个:[i['end_time'] for i in time if i['data_resolution']=='flow' and i['datasource']=='TRAFFIC']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python