【问题标题】:ValueError("No JSON object could be decoded") Python googlemapsValueError("没有 JSON 对象可以被解码") Python googlemaps
【发布时间】:2015-09-04 05:13:21
【问题描述】:

我正在使用 Google 应用引擎 (v1.9.24) 和烧瓶 (v0.10.1) 和 python (v2.7.5)。

我正在尝试让 googlemaps (v2.2) API 与我的应用一起使用。

我知道返回的 JSON 格式错误,但我不知道为什么。

我的代码如下:

import googlemaps
gmaps = googlemaps.Client(key='API_KEY')
geocode_result = gmaps.geocode('6b, oko awo, victoria island, lagos')
return geocode_result

这很好用,但返回格式错误的 JSON 字符串(我通过在本地机器上运行相同的代码确认了这一点)。

我使用JSON validator 来验证它返回的 JSON。由于 JSON 格式错误,我的烧瓶应用程序崩溃并给了我一个 ValueError。 我不知道如何解决这个问题,如果有任何帮助,我将不胜感激。

【问题讨论】:

    标签: google-app-engine flask


    【解决方案1】:

    问题不在于 JSON。其实,

    gmaps.geocode('6b, oko awo, victoria island, lagos')
    

    根本不返回 JSON,它返回一个包含“结果”值的列表,如 the google docs 中所述,您可以在 googlemaps 库的源代码中看到 here

    实际返回的是一个填充了数据的列表对象。此列表中的所有字符串值都是 unicode 字符串。这意味着它们看起来像 u'hello' 而不是 json.loads() 期望的普通 "hello" (注意双引号)(我假设这就是您尝试加载 JSON 的方式)。

    这可能意味着您要解决的问题是一个不存在的问题。您不必加载 JSON,因为它已经是一个 python 列表对象。

    你可以通过做确认

    json.loads(json.dumps(geocode_result))
    

    它工作正常,这意味着 JSON 结构没有问题。

    【讨论】:

    • 感谢您的提示。当我从 python 控制台运行代码时,它似乎运行良好,但是当我从开发服务器运行它时它不起作用(那是它给出 ValueError 的时候)。
    • 需要更多信息。例如,您是否仍在尝试使用 json 验证器。显示错误所在的代码。
    猜你喜欢
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2015-01-04
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    相关资源
    最近更新 更多