You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3 Socket发送JSON数据时双引号变单引号无法解析问题

解决Socket发送JSON时双引号变单引号的问题

问题出在你直接把Python字典和HTTP头字符串拼接:

response_request = "HTTP/1.1 200 OK\n\n" + response_data

Python会自动将字典转为repr()格式的字符串,这种格式用单引号表示字符串,不属于标准JSON格式,所以接收端拿到的是带单引号的内容,无法正常解析。

正确做法:用json.dumps()生成标准JSON字符串

先导入json模块,将字典转为符合JSON规范的双引号字符串,再和HTTP头拼接:

import json

server_name = "One"

response_data = {"error": "false", "data": "Success", "Server": server_name}
# 将字典转为标准JSON字符串
json_data = json.dumps(response_data)
response_request = "HTTP/1.1 200 OK\n\n" + json_data

sock.send(response_request.encode())
sock.close()

为什么直接写死字符串有效?

你手动写的"""HTTP/1.1 200 OK\n\n{"error": "false", "data": "Success"}"""本身就是标准JSON格式的字符串,自带双引号,所以发送后不会出现问题,但这种方式无法动态插入变量。而json.dumps()既支持动态插入变量,又能保证输出的是标准JSON格式。

接收端验证

修改发送端后,接收端可以直接用response.json()解析数据:

response = requests.get("http://localhost/")
print(response.text)  # 输出带双引号的标准JSON
print(response.json())  # 直接解析为Python字典

内容的提问来源于stack exchange,提问作者MrRage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 22:15:40