我正在尝试返回API响应的不同部分。
我的数据:
{
"data": [
"values": [
{
"value": {
"X": 7544,
"Y": 7532,
"Z": 5298
},
"end_time": "2016-11-01"
},
{
"value": {
"X": 7566,
"Y": 7579,
"Z": 5304
},
"end_time": "2016-11-02"
}
]
]
}
这是我在致电' data = json_object ['数据']':
时得到的回复[{'description': 'xxx', 'title': 'yyy', 'values': [{'end_time': '2016-12-01', 'value': {'v1': 187, 'v2': 4}}, {'end_time': '2016-12-02', 'value': {'v1': 177, 'v2': 6}}], 'name': 'name', 'id': '87654/', 'period': ‘day'}]
我的代码:
def myfunc():
r = requests.get('URL...')
json_object = r.json()
data = json_object['data']
end_time = data[0]['values'][0]['end_time']
values = data[0]['values'][0]['value']
return render_template('results.html', date = end_time, result = values)
现在我只获得了第一个值和end_time。所有返回的尝试都以此错误结束:
TypeError: list indices must be integers, not str
请帮忙!
答案 0 :(得分:0)
您正在寻找的是end_time = data[0](['values'][0]['end_time'])
- 现在它正在寻找数据[0] ['值'],这会产生错误值'值&#39 ;是一个字符串。
答案 1 :(得分:0)
基于你的json
values
是一个保存类型数组值的键。假设values
是父元素,则需要
data["values"][0]['end_time']
答案 2 :(得分:0)
如果您只有一个元素values
,那么您可以执行以下操作:
data[0]['values'][0]['end_time']
如果数据对象中有许多项目,则可能需要像这样循环:
for item in data:
end_time = item['values'][0]['end_time']
# ...
此外,在values
,您有多个项目,要阅读end_time
内每个项目的values
,您可以这样做:
for item in data:
for value in item['values']
end_time = value['end_time']
# ...
答案 3 :(得分:0)
我很幸运,最后用value['value']
遍历该列表中的dict。谢谢大家的帮助!