[英]Importing data from JSON issue - Python
我正在尝试解析来自 JSON 的数据并打印来自特定键(Crust)的值。 问题是我收到错误TypeError: list indices must be integers, not str 。 此错误适用于Crust=response.json()['Crust']行有什么想法吗?
import requests
import json
if __name__=='__main__':
response=requests.get("https://order-pizza-api.herokuapp.com/api/orders")
Crust=response.json()['Crust']
jprint(Crust)
来自https://order-pizza-api.herokuapp.com/api/orders的响应是一个对象列表,因此您不能像对字典一样对其进行索引。 见下文
[
{
"Crust": "NORMAL",
"Flavor": "BEEF-NORMAL",
"Order_ID": 1,
"Size": "M",
"Table_No": 1,
"Timestamp": "2019-12-03T18:21:08.669365"
},
{
"Crust": "THIN",
"Flavor": "CHEESE",
"Order_ID": 2,
"Size": "S",
"Table_No": 5,
"Timestamp": "2019-12-03T18:21:08.708470"
},
{
"Crust": "NORMAL",
"Flavor": "CHICKEN-FAJITA",
"Order_ID": 3,
"Size": "L",
"Table_No": 3,
"Timestamp": "2019-12-03T18:21:08.710006"
}
]
要获得外壳,您必须从列表中查找 select 字典并获取外壳。
response = requests.get("https://order-pizza-api.herokuapp.com/api/orders")
resp_json = response.json()
print(len(resp_json)) # 3
print(resp_json[0]["Crust"]) # NORMAL
print(resp_json[1]["Crust"]) # THIN
print(resp_json[2]["Crust"]) # NORMAL
要获得所有的外壳,可以迭代响应并抓取每个外壳。
[item["Crust"] for item in resp_json]
尝试这个:
In [19]: import ast
In [20]: response = requests.get("https://order-pizza-api.herokuapp.com/api/orders")
In [21]: ast.literal_eval(response.content.decode())
Out[21]:
[{'Crust': 'NORMAL',
'Flavor': 'BEEF-NORMAL',
'Order_ID': 1,
'Size': 'M',
'Table_No': 1,
'Timestamp': '2019-12-03T18:21:08.669365'},
{'Crust': 'THIN',
'Flavor': 'CHEESE',
'Order_ID': 2,
'Size': 'S',
'Table_No': 5,
'Timestamp': '2019-12-03T18:21:08.708470'},
{'Crust': 'NORMAL',
'Flavor': 'CHICKEN-FAJITA',
'Order_ID': 3,
'Size': 'L',
'Table_No': 3,
'Timestamp': '2019-12-03T18:21:08.710006'}]
In [22]: [x['Crust'] for x in ast.literal_eval(response.content.decode())]
Out[22]: ['NORMAL', 'THIN', 'NORMAL']
这是单线:
In [33]: [x['Crust'] for x in requests.get("https://order-pizza-api.herokuapp.com/api/orders").json()]
Out[33]: ['NORMAL', 'THIN', 'NORMAL']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.