我如何阅读Json fromat?

时间:2016-04-15 13:30:16

标签: php python json

我正在使用此代码位:

    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=Budapest&country=Hungary

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很新。

1 个答案:

答案 0 :(得分:1)

字典包含在列表中,这对初学者来说非常困惑。如果在响应中看到[],则必须使用数字索引来引用这些括号内的内容。然后你可以通过关键字引用里面的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.0404707 47.4983815

处理完成,退出代码为0