当前位置: 首页 > 面试题库 >

Google API的Python错误加载JSON代码

敖和韵
2023-03-14
问题内容

我正在使用google geocode API使用Python
3.5测试以下Python代码。但是收到以下错误。该代码是从Coursera的示例代码复制而来的。我们假设能够测试任何位置。例如:密西根州的安娜堡

关于为什么加载JSON代码时会出错的任何想法:

从None> JSONDecodeError:期望值提高JSONDecodeError(“期望值”,s,err.value)

这是代码:

import urllib
import json

serviceurl = 'http://maps.googleapis.com/maps/api/geocode/json?'

while True:
    address = input('Enter location: ')
    if len(address) < 1 : break

    url = serviceurl + urllib.parse.urlencode({'sensor':'false',
       'address': address})
    print ('Retrieving', url)
    uh = urllib.request.urlopen(url)
    data = uh.read()
    print ('Retrieved',len(data),'characters')

    js = json.loads(str(data))

问题答案:

因此,我不得不修改您的代码才能运行。我在Ubuntu 14.04上使用Python 3.4.3。

#import urllib  
import urllib.parse
import urllib.request

我收到了类似的错误:

heyandy889@laptop:~/src/test$ python3 help.py 
Enter location: MI
Retrieving http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=MI
Retrieved 1405 characters
Traceback (most recent call last):
  File "help.py", line 18, in <module>
    js = json.loads(str(data))
  File "/usr/lib/python3.4/json/__init__.py", line 318, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.4/json/decoder.py", line 343, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.4/json/decoder.py", line 361, in raw_decode
    raise ValueError(errmsg("Expecting value", s, err.value)) from None
ValueError: Expecting value: line 1 column 1 (char 0)

基本上,我们不是尝试解码有效的json字符串,而是尝试解码无效的json的Python“
None”值。尝试在以下示例代码中打补丁。首先运行一次,仔细检查最简单的json对象’{}’是否可以工作。然后,一个一个地尝试每个不同的“
possible_json_string”。

#...
print ('Retrieved',len(data),'characters')

#possible_json_string = str(data) #original error
possible_json_string = '{}' #sanity check with simplest json
#possible_json_string = data #why convert to string at all?
#possible_json_string = data.decode('utf-8') #intentional conversion

print('possible_json_string')
print(possible_json_string)
js = json.loads(possible_json_string)


 类似资料:
  • 新闻资讯 newsComponent.ts 新闻组件.html 控制台错误 错误类型错误:node_modules不是一个函数_esm5(_next)在node_modules。/node_modules/rxjs/_esm5/内部/运营商/_esm5mergeMap.js.MergeMapSubscriber.notifyNext(node_modules)在_esm5。/mergeMap.js

  • 说明:编写一条if语句,验证字符串是否包含字符。 添加一个if语句,检查是否大于零。不要忘记if语句末尾的!如果字符串中确实有一些字符,则打印用户的单词。否则(即:语句),请打印空。您需要多次运行代码,测试空字符串和带字符的字符串。当你确信你的代码可以工作时,继续下一个练习。 我被卡住了,因为我一直遇到以下错误。我做错了什么?

  • 我有以下命令。我想循环使用此键和值,即对于冰/冷的项目,打印“值” 我试过这个: 却给我错误

  • 我对GoogleAPI有些问题。 这是错误。 条件:jdk 1.8,Tomcat 8.5 请帮我解决这个错误。

  • 我正在使用iOS 11的AFN网络。我得到的错误如下: 任务 我已经尝试了所有可能的方法。 请帮我解决这个问题。 非常感谢。