Python json响应中的访问字段

Python json响应中的访问字段,python,json,api,rest,Python,Json,Api,Rest,我试图从一个API请求中提取一个特定字段,稍后我将在另一个任务中使用该字段。基本上需要自动化这个请求,这样我才能跟上远程机器的时间戳 我可以使用我创建的脚本获取json列表: from datetime import datetime from requests.auth import HTTPBasicAuth import requests import json response = requests.get("https://$hostname/api/profiler/1.13/re

我试图从一个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
    }
]
我需要提取这个精确的字段(特别是结束时间字段):


我似乎无法提取该字段。

解决方案是迭代json响应:
list

之后:
time=response.json()

试试这个:

[i['end_time'] for i in time if i['data_resolution']=='flow' and i['datasource']=='TRAFFIC']

谢谢各位,我就是这样做的。谢谢@Doc

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

response = 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)

为了解决这个问题,您对
json
做了哪些研究?您得到的json是一个列表,因此python列表的所有逻辑都适用。因此,第一个条目是时间[0],最后一个条目是时间[-1]。您可以使用
在时间中为t:
迭代所有值。对于第一个条目的
end\u time
,您有
time[0]['end\u time']
。您可以迭代所有条目Quick noob question,这也会给我值吗?使用带有用户名的@symbol,如@AlexandreAmaralBednell,向用户发送消息。还有,我不明白你的问题。解释一下。
[i['end_time'] for i in time if i['data_resolution']=='flow' and i['datasource']=='TRAFFIC']
from datetime import datetime
from requests.auth import HTTPBasicAuth
import requests
import json

response = 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)