這是Google距離矩陣的回覆。我想只有兩個值作爲輸出,我試圖用Python來提取它。從Python中提取JSON的值
{
"destination_addresses" : [ "Hoorn, Nederland" ],
"origin_addresses" : [ "Amsterdam, Nederland" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "45,0 km",
"value" : 44952
},
"duration" : {
"text" : "40 min.",
"value" : 2423
},
"status" : "OK"
}
]
}
],
"status" : "OK"
}
這是我到目前爲止所嘗試過的。我想每15分鐘收到一次Google的回覆,並將其寫入文件。但是在文件中我只想要距離和持續時間的值,而且我沒有實現這個目標的運氣。我不確定Google的回覆是否是正確的JSON,因此我嘗試了json.loads,但它不允許我從回覆中提取某些部分。有任何想法嗎?
import requests
import json
import datetime
from apscheduler.schedulers.blocking import BlockingScheduler
uri = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=Amsterdam&destinations=Hoorn&mode=driving&key="
now = datetime.datetime.now()
def job():
datum = now.strftime("%Y-%m-%d %H:%M")
print datum
text_file = open('tijdsduur.txt', 'a')
batch = requests.get(uri)
data = batch.text
jdata = json.loads(data)
print jdata['elements']['distance']['value']
text_file.write(data)
text_file.write('\n')
text_file.close()
job()
scheduler = BlockingScheduler()
scheduler.add_job(job, 'interval', minutes=15)
scheduler.start()
錯誤,當我嘗試json.loads:KeyError異常 '元素'
我沒有看到你在代碼中使用'json.loads'。請說明你是如何嘗試使用它的,它是如何工作的(例如:錯誤信息,錯誤的輸出,...) – UnholySheep
增加了json.loads。試圖打印它,看看它是否有效,但沒有。給我一個KeyError'元素' – Donald
,因爲你必須指定的第一個鍵是「rows」,也是「rows」和「elements」是數組,所以你需要指定你需要的元素 - 所以它應該是'print jdata ['rows'] [0] ['elements'] [0] ['distance'] ['value']' – UnholySheep