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

Python无法解码JSON对象

方心思
2023-03-14
问题内容

我在JSON方面遇到问题,我似乎无法弄清为什么它不起作用。这应该输出JSON。

这是我的代码

#!/usr/bin/env python
import socket
import struct
import json

def unpack_varint(s):
    d = 0
    i = 0
    while True:
        b = ord(s.recv(1))
        d |= (b & 0x7F) << 7*i
        i += 1
        if not b & 0x80:
            return d

def pack_data(d):
    return struct.pack('>b', len(d)) + d

def pack_port(i):
    return struct.pack('>H', i)

def get_info(host, port=25565):

    # Connect
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host, port))

    # Send handshake + status request
    s.send(pack_data("\x00\x00" + pack_data(host.encode('utf8')) + pack_port(port) + "\x01"))
    s.send(pack_data("\x00"))

    # Read response
    unpack_varint(s)     # Packet length
    unpack_varint(s)     # Packet ID
    l = unpack_varint(s) # String length

    d = ""
    while len(d) < l:
        d += s.recv(1024)

    # Close our socket
    s.close()

    # Load json and return
    return json.loads(d.decode('utf8'))
get_info('162.213.43.124');

我收到这个错误

Traceback (most recent call last):
  File "main.py", line 46, in 
    get_info('162.213.43.124');
  File "main.py", line 45, in get_info
    return json.loads(d.decode('utf8'))
  File "/usr/local/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/local/lib/python2.7/json/decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/lib/python2.7/json/decoder.py", line 383, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

如果有人可以救援,那就太好了!


问题答案:

看来您的JSON无效。在这种情况下,这完全取决于服务器发送给您的数据(您未显示)。我建议通过JSON验证程序运行响应。



 类似资料:
  • 我有一个json转储为 我编写了一个小代码来从json获取一些详细信息 这给我造成了错误: 回溯(最近一次调用):文件“python_opennms.py”,第24行,in x=get_nodes_opennms()文件“python_opennms.py”,第15行,in get_nodes_opennms for i in JSON.load(open('out.txt'))[“alarm”]

  • 问题内容: 我正在尝试从FlickR解析JSON响应,但是遇到了困难。我已经进行了一些测试,并且收到200的响应代码,并且能够使用日志记录拦截器查看实际的JSON。 但是,当我尝试访问JSON对象时,我收到了一个空指针。我觉得这与我的映射/ JSON到POJO有关: 相片: 照片: JSON响应: LOGCAT 72行 问题答案: 您的课程不适合服务器 响应, 因此您的身体为 Null 。您的模型

  • 问题内容: 我正在尝试向我的Watchkit扩展发送“类”,但出现此错误。 由于未捕获的异常’NSInvalidUnarchiveOperationException’而终止应用程序,原因:’ -[NSKeyedUnarchiver encodeObjectForKey:]:无法解码类(MyApp.Person)的对象 存档和取消存档在iOS App上运行良好,但在与watchkit扩展进行通信时

  • 我正在尝试为Falcon框架编写一些pytests,并按照这里的说明进行操作。我想模拟一个POST请求。然而,我不断得到以下错误 测试/测试应用。29岁:29岁:29岁:以下以下学校的学生:29岁:以下以下学校学校的学生:29::uu\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\u..//harvester venv/lib/python2

  • GSON不是在一开始就解析我传递的整个JSON字符串吗?因此,最终,我希望新的数据源是对象。那可行吗?