从Requests.get()获取json时出错

时间:2017-05-14 20:23:08

标签: python json get request

我使用requests.get从我的网页获取json,但是在运行代码时我收到了一些错误。 这是我的代码:

def get(t):
while 1:
    r = requests.get('http://raspberry.site11.com/controller.php')
    while r.status_code != 200:
        r = requests.get('http://raspberry.site11.com/controller.php')      
    d=r.json()
    dv1=d["Dv1"]
    dv2=d["Dv2"]
    dv3=d["Dv3"]
    dv4=d["Dv4"]    

    if dv1=="1":
        GPIO.output(6,0)
    else:
        GPIO.output(6,1)        
    if dv2=="1":
        GPIO.output(13,0)
    else:
        GPIO.output(13,1)           
    if dv3=="1":
        GPIO.output(19,0)
    else:
        GPIO.output(19,1)       
    if dv4=="1":
        GPIO.output(26,0)
    else:
        GPIO.output(26,1)   
    time.sleep(t)

这是我被收回的错误:

    Unhandled exception in thread started by <function get at 0xb6506930>
Traceback (most recent call last):
  File "thread.py", line 33, in get
    d=r.json()
  File "/usr/lib/python2.7/dist-packages/requests/models.py", line 793, in json
    return json.loads(self.text, **kwargs)
  File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 369, in decode
    raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 1 column 4 - line 1 column 10 (char 3 - 9)

愿所有人帮助我,非常感谢。

1 个答案:

答案 0 :(得分:0)

我认为你可以做到

def get_json(data):
    try:
        return data.json()
    except ValueError:
        return False

然后

def get(t):
    while 1:
        r = requests.get('http://raspberry.site11.com/controller.php')
        while not get_json(r):
            r = requests.get('http://raspberry.site11.com/controller.php')      
        d = get_json(r)