【问题标题】:Python No JSON object could be decodedPython 无法解码 JSON 对象
【发布时间】:2016-10-12 21:18:53
【问题描述】:

我遇到了 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 无效

标签: python json


【解决方案1】:

您的 JSON 似乎无效。在这种情况下,这完全取决于服务器发送给您的数据,而您没有显示。我建议通过JSON validator 运行响应。

【讨论】:

  • 我是 python 新手,如何获取服务器发送的输出以便将其放入 JSON Validator?
  • @Mario - print d.decode('utf-8') 或者如果使用 python 3.x print(d.decode('utf-8'))
猜你喜欢
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 2023-03-12
  • 2015-01-04
  • 2014-06-21
  • 1970-01-01
  • 2017-11-17
  • 2022-01-07
相关资源
最近更新 更多