我想通过套接字发送/接收数据。
由于 ROS(melodic),我使用 python 2.7,由于tensorflow,我也使用 python 3.6。
字典数据,例如 {'key_name':[[1,2,3],[4,5,6]]}
,使用 JSONEncoder 发送和编码。编码器()
。
客户端通过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()
关于python 2.7 与 json 的套接字通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61006696/