我如何从一个Json那里读


How do I read from a Json fromat?

我使用的是这个代码位:

    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