python 2.7与json的套接字通信



我想通过套接字发送/recv数据。

我使用python 2.7是因为ROS(旋律(,也使用python 3.6是因为tensorflow。

dict数据,例如{'key_name':[[1,2,3],[4,5,6]]},被发送并用JSONEncoder.encoder()编码
客户端接收到带有loads()的json数据,并将其重新发送给服务器
客户端使用python 2.7,服务器使用python 3.6

def _send(socket, send_data):
json_data = json.JSONEncoder().encode(send_data)
socket.sendall(json_data)
def _recv(socket):
recv_data = socket.recv(BUFSIZE)
json_data = json.loads(recv_data, encoding="utf-8")
return json_data

我有错误

File "/usr/lib/python3.6/json/deoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 4097 (char 4096)

我需要一个在python 2.7和3.6上运行的python代码。

错误来自json解码器。

json_data = json.loads(recv_data, encoding="utf-8"),

当json数据(在您的情况下是recv_data(的格式不正确时,就会出现这种情况。通常缺少逗号","之类的。为了进行调试,我建议您在进行json.loads()之前先转储服务器上接收到的数据

最新更新