Python读取json响应并追加

Python读取json响应并追加,python,json,request,Python,Json,Request,我已经开发了一个带有请求模块的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_ =

我已经开发了一个带有请求模块的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项数组的lat和lng值追加到数组中,并尝试使用此代码

for i in json_result:
        print(i['loc']['origin']['lat'])
        dict.append(i['loc']['origin']['lat'])
但我有这个错误 TypeError:字符串索引必须是整数,而不是str

如何检索数组中每个元素的值lat和lng并将其追加到dict中


谢谢

json\u结果
是一个字符串,因为它是
json.dumps()
的结果

你根本不需要这个。拆下整条线路,直接在
数据上操作


(作为一个样式点,请停止添加那些不必要的尾随下划线。)

json\u result
是一个字符串,因为它是
json.dumps()的结果

你根本不需要这个。拆下整条线路,直接在
数据上操作


(作为一个样式点,请停止添加那些不必要的尾随下划线。)

因此问题是,json中的i的
结果将返回您的
json
中的每个
键。您可以简单地执行以下操作:

for entry in json_result.get('loc'):
    do stuff here....

因此,问题在于json_result
中i的
,它将返回
json
中的每个
键。您可以简单地执行以下操作:

for entry in json_result.get('loc'):
    do stuff here....

只是另一种解决方案,如果仍然出现错误,则也可以尝试使用regex仅获取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])

只是另一种解决方案,如果仍然出现错误,则也可以尝试使用regex仅获取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])

我尝试过,但错误是相同的:类型错误:字符串索引必须是整数我尝试过,但错误是相同的:类型错误:字符串索引必须是整数不应该是
I['loc'][1]['origin']['lat']
。由于
loc
包含一个字典列表。当我将JSON结果放入一个变量并打印(数据[“loc”][1][“origin”][“lat”])
时,我收到了相同的错误。我得到了所需的输出。它不应该是
I['loc'][1]['origin]['lat']
。由于
loc
包含一个字典列表。当我将JSON结果放入变量并打印(数据[“loc”][1][“origin”][“lat”])
时,我收到了相同的错误。