我使用的是这个代码位:
from flask import Flask, jsonify, abort, request
from datetime import datetime
import json
import cx_Oracle
import requests
/*Some other code bits*/
longitude = 0.0
latitude = 0.0
try:
params = {
'action': 'query',
'country': 'Hungary',
'city': 'Budapest',
'format' : 'json',
}
res = requests.get('http://nominatim.openstreetmap.org/search.php', params=params)
page = res.json()
latitude = page['lat']
longitude =page['lon']
except:
pass
return jsonify(name=result[0],address=result[1],phone=result[2],income=result[3],Latitude = latitude, Longitude=longitude)
我正试图从这个JSON格式的链接中获得纬度和经度:http://nominatim.openstreetmap.org/search.php?action=query&format=json&city=布达佩斯&country=匈牙利
name=result[0],address=result[1],phone=result[2],income=result[3]都很好,工作也很好,但是,我一定做错了什么,因为纬度和经度仍然是0.0。如果我从第1行和第2行删除初始化,那么我会得到并错误地显示
UnboundLocalError: local variable 'latitude' referenced before assignment
可能是因为它在try块中遇到了某种错误。
对于这个简单的问题我很抱歉,我对python和JSON非常陌生。
字典包含在一个列表中,这对初学者来说非常困惑。如果您在响应中看到[],则必须使用数字索引来引用这些括号内的内容。然后你可以通过关键字引用里面的dict。使用请求获取JSON。
import requests
r = requests.get('http://nominatim.openstreetmap.org/search.php?action=query&format=json&city=Budapest&country=Hungary').json()
print(r[0]['lon'])
print(r[0]['lat'])
输出:19.040470747.4983815
进程已完成,退出代码为0