从JSON中提取特定值

时间:2017-06-01 13:50:38

标签: javascript python json

我使用的是Google Distance Matrix API,我得到的回复是JSON:

 {
   "destination_addresses" : [ "Chandigarh, India" ],
   "origin_addresses" : [ "Delhi, India" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "244 km",
                  "value" : 243506
               },
               "duration" : {
                  "text" : "3 hours 54 mins",
                  "value" : 14069
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

我想从JSON,destination_addressorigin_addressdistancedurationstatus获取以下值。这是我正在尝试的代码:

import requests as r
import json

a = r.get("https://maps.googleapis.com/maps/api/distancematrix/json?origins=Delhi&destinations=Chandigarh&key=key")
#text form of a
tfa = a.text
print(tfa)
with open('data.json','w') as outfile:
    json.dump(tfa,outfile)

json_data = json.loads(tfa)
print(json_data["destination_addresses"])
print(json_data["origin_addresses"])
print(json_data["rows"][0]["elements"][0]["distance"])
print(json_data["rows"]["elements"]["duration"])

我收到的输出给出了目的地原点和距离,但是当我尝试抓住持续时间时出现错误,distance内的值也打印为'text':'244km','value':23432,但我只是想要得到的价值不是他们的标签。有没有办法做到这一点?也可以限制在<{em> {/ 1>}元素中提取的值(因为我只想要文本而不是)?

1 个答案:

答案 0 :(得分:3)

print(json_data["rows"][0]["elements"][0]["distance"]["value"])

["value"]添加到当前代码中只会显示该值。

print(json_data["rows"]["elements"]["duration"])

您尝试从与距离相同的级别获取某些内容,但您忘记了此行中的[0]。您基本上可以复制并粘贴打印距离值的代码,但将distance替换为duration

print(json_data["rows"][0]["elements"][0]["duration"]["value"])