извлечение определенных значений из JSON

1

Я использую API-интерфейс Google Distance Matrix, и ответ, который я получил, был в 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_address, origin_address, distance, duration и status. Это мой код, который я пытаюсь сделать:

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, но я только хотите получить значения не их ярлыки. Есть ли способ сделать это? Также возможно ограничить значения, извлеченные внутри элемента distance (потому что я хочу, чтобы текст не был значением)?

Теги:

1 ответ

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"])

Ещё вопросы

Сообщество Overcoder
Наверх
Меню