我已经使用requests模块开发了一个post请求,并且我检索了一个JSON,这是代码
headers_ = {'Authorization': acc_token}
params_ = (('start_time', '2016-08-01T00:00:00+00:00'),('limit', '2'))
r = requests.get('https://server.com/API/v1', headers=headers_, params=params_)
data_ = r.json()
json_result = (json.dumps(data_, indent=4, sort_keys=False))
这是json结果
{
"loc":[
{
"origin":{
"lat":39.72417,
"lng":-104.99984,
"eta_seconds":null,
"address":""
},
"destination":{
"lat":39.77446,
"lng":-104.9379,
"eta_seconds":null,
"address":null
}
},
{
"origin":{
"lat":39.77481,
"lng":-104.93618,
"eta_seconds":null,
"address":"10 Albion Street"
},
"destination":{
"lat":39.6984,
"lng":-104.9652,
"eta_seconds":null,
"address":null
}
}
] } 现在我试图将每个json items数组的lat和lng值附加到数组中,我尝试使用此代码
for i in json_result:
print(i['loc']['origin']['lat'])
dict.append(i['loc']['origin']['lat'])
但我有这个错误 TypeError:字符串索引必须是整数,而不是str
如何检索数组中每个元素的值lat和lng并附加到dict中?
由于
答案 0 :(得分:2)
json_result
是一个字符串,因为它是json.dumps()
的结果。
你完全不需要它。删除整行,并直接在data_
上运行。
(作为一个样式点,请停止添加那些不必要的尾随下划线。)
答案 1 :(得分:2)
问题是这个for i in json_result
,它将为您keys
中的每个json
返回。你可以这样做:
for entry in json_result.get('loc'):
do stuff here....
答案 2 :(得分:0)
只是一个不同的解决方案,如果你仍然收到错误,那么你也可以尝试使用正则表达式来获取lat,lng部分:
import re
convert=str(json_result)
pattern=r"(l([ng]|[at]).'):\s[-]?\d{0,15}.\d{0,15}"
match=re.finditer(pattern,convert)
print([i.group() for i in match])