gpt4 book ai didi

python - 在 Python 中按值搜索从 API 返回的 JSON

转载 作者:行者123 更新时间:2023-11-28 21:09:12 25 4
gpt4 key购买 nike

我正在使用 Python 2.7.12 访问一个提供 JSON 响应的 API。 JSON 看起来像这样:

{
"Header": {
"GeneratedAt": "2016-07-31T13:42:33",
"PeriodA": {
"startDate": "20160718",
"type": "WEEKLY",
"endDate": "20160724"
}
},
"Data": [
{
"Metrics": [
{
"name": "Sales",
"values": {
"A": "823456.32",
"B": ""
},
"id": "TL_TOTAL_SALES"
},
{
"name": "Orders",
"values": {
"A": "1230",
"B": ""
},
"id": "TL_TOTAL_ORDERS"
},
],
"label": "Commerce Metrics"
},
]
}

我使用 Python 将 JSON 解析为字符串,然后我需要搜索 JSON 字符串并提取特定指标的值,因此在本例中我需要指标“销售额”的值。

到目前为止我的代码:

import json, requests

url = "https://something.com/blah-blah-blah/"
r = requests.get(url)
data = json.loads(r.text)
print json.dumps(data, indent=4)

我想继续做的是将“Sales”中的值“A”存储在一个名为 totalSales 的变量中,但需要了解从 JSON 响应中查询和提取单个数据值的最佳实践,这是API 实际返回内容的精简版本。

最佳答案

假设顺序始终与您只需按键访问的顺序相同,您也不需要使用 json.loads,因为 requests 可以为您处理:

js = requests.get(url).json()

total_sales = js["Data"][0]['Metrics'][0]["values"]["A"]

print(total_sales)

如果顺序可以不同,只需迭代直到找到字典然后中断:

js = requests.get(url).json()
for dct in js["Data"][0]['Metrics']:
if dct.get("name") == "Sales":
total_sales = dct["values"]["A"]
break

关于python - 在 Python 中按值搜索从 API 返回的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38685098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com