Python JSON 解码 ValueError : Extra data:

标签 python python-3.x

我在尝试解码和打印从套接字连接接收到的 JSON 时遇到问题。

完整的追溯:

C:\Users\Jeremy>python F:\Files\Python\test.py
2013-01-04 21:15:35 [INFO] [AutoSaveWorld] World save Complete!
2013-01-04 21:15:50 [INFO] [←[34;1mMain←[37;1m]←[32;22mRexOZ←[37;1m: you cahaned
 your house it looks awesome←[m
Traceback (most recent call last):
  File "F:\Files\Its safer indoors\Python\test.py", line 14, in <module>
    data = json.loads(dreceve)
  File "C:\Python33\lib\json\__init__.py", line 309, in loads
    return _default_decoder.decode(s)
  File "C:\Python33\lib\json\decoder.py", line 355, in decode
    raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 2 column 1 - line 3 column 1 (char 151 - 344)

如您所见,前两行打印正常,然后就崩溃了。

完整代码:

import socket
import json
import re

HOST = 'host.host.net'
PORT = 8082
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
dsend = "/api/subscribe?source=console&key=SUPERSEXYSECRETEY&show_previous=true\n"
s.sendall(dsend.encode())

while 1:
    dreceve = s.recv(1024).decode()
    data = json.loads(dreceve)
    succses = data['success']
    line = succses['line']
    print(line)

s.close()

我已经四处寻找这个错误,但我发现的页面并没有解决我的问题,任何帮助工作都将不胜感激。

最佳答案

无论你收到什么,它似乎并没有在它应该结束的地方结束;示例:

>>> import json
>>> json.loads(""" {"Hello" : "World"} \ """)
....
ValueError: Extra data: line 1 column 21 - line 1 column 23 (char 21 - 23)

我建议在解析之前检查您的输出以找出问题所在。

附言。有更简单的方法可以从服务器获取 JSON 数据(假设您的服务器返回可解析的 JSON,但它可能不会)。这是使用 requests 的示例图书馆:

>>> import json, requests
>>> u = "http://gdata.youtube.com/feeds/api/standardfeeds/most_popular?alt=json"
>>> json.loads(requests.get(u).text) # <-- request + parse
{u'feed': {u'category': [{u'term': u'http://gdata.youtube.com/...

.....

关于Python JSON 解码 ValueError : Extra data:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14150823/

相关文章:

django - Django 模型中的 lower()

Python 在 linux 路径中查找 SSL 证书,但我使用的是 Windows : how to change?

python - 如何在scikit learn中进行欠采样?

python - 如何在python中存储绝对路径并将其显示为目录结构?

python - 使用 Django 管理站点自动填充created_by 和actionDate 字段

python - 更新 Tensorboard,同时使用 conda 保持 Tensorflow 旧版

mysql - 值不保存到 mysql 数据库中

python - 在 urwid 'Frame' 对象中没有属性 'rows'

python - 是否可以在 Enum 中定义类常量?

python - 如何使用 Python 中的 Discord 机器人获取用户输入?