Python json响应中的访问字段
我试图从一个API请求中提取一个特定字段,稍后我将在另一个任务中使用该字段。基本上需要自动化这个请求,这样我才能跟上远程机器的时间戳 我可以使用我创建的脚本获取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
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)