json.decoder.JSONDecodeError:应为'';分隔符:python中的错误

json.decoder.JSONDecodeError:应为'';分隔符:python中的错误,python,json,sockets,Python,Json,Sockets,我用python中的套接字发送json数据 {“接收方”:“2”,“发送方”::1,“序号”:10,“数据”:“{“iv”:“jdjhvwGriJ95kZwgDWlShw=”,“密文”:“Fg7ugYYAnPzL+lG8d7QDDA=”}” 这是我发送的数据。它是字符串类型,因为我不能将sendall用于json类型 当我收到它时,我试图将该字符串转换成json。 所以我做了 data = client_socket.recv(1024) #dat

我用python中的套接字发送json数据

{“接收方”:“2”,“发送方”::1,“序号”:10,“数据”:“{“iv”:“jdjhvwGriJ95kZwgDWlShw=”,“密文”:“Fg7ugYYAnPzL+lG8d7QDDA=”}”

这是我发送的数据。它是字符串类型,因为我不能将sendall用于json类型

当我收到它时,我试图将该字符串转换成json。 所以我做了

            data = client_socket.recv(1024)
            #data = json.loads(data)
            data = json.loads(json.dumps(data))
我得到了json.decoder.JSONDecodeError:应为','分隔符:第1行第59列(字符58) 错误


请帮忙

您的
数据
字段中有语法错误。通过将其放在
“{”iv:“jdjhvwGriJ95kZwgDWlShw==”,“ciphertext:“Fg7ugYYAnPzL+lG8d7QDDA==”}”
,双引号会弄乱编码器,导致其抛出错误

如果希望值成为对象,可以简单地删除包含的引号,如下所示:

data = {"receiver": "2", "sender:": 1, "seq_num": 10, "data": {"iv": "jdjhvwGriJ95kZwgDWlShw==", "ciphertext": "Fg7ugYYAnPzL+lG8d7QDDA=="}}
但是,如果希望它是一个字符串,则必须使其中的所有双引号都像这样转义:

只需使用
j=json.dumps(data)
将Python字典
data
转换为json字符串
j
。不需要手动逃避一切。
{
    "receiver": "2", "sender:": 1, "seq_num": 10, 
    "data": "{\"iv\": \"jdjhvwGriJ95kZwgDWlShw==\", \"ciphertext\": \"Fg7ugYYAnPzL+lG8d7QDDA==\"}"
}