如何处理BaseHTTPRequestHandler传输字典时的URL编码与JSON解析问题?
解决URL编码字符串转JSON的问题
核心处理步骤
服务器收到的是URL编码后的字符串,需按以下两步转换为JSON格式:
- 导入依赖模块
import urllib.parse import json
- 解码URL编码内容
用urllib.parse.unquote()还原原始JSON字符串:
decoded_json_str = urllib.parse.unquote(data) # 处理后得到:{"ID": {"type": "title", "search": "test"}}
- 解析为Python字典
通过json.loads()将字符串转成可操作的字典:
json_dict = json.loads(decoded_json_str) # 最终结果:{'ID': {'type': 'title', 'search': 'test'}}
关于decode报错的说明
你调用data.decode("utf-8")报错,是因为data已经是Python的Unicode字符串(不是字节类型),无需再做UTF-8解码。URL编码是HTTP表单数据的特定编码规则,和字节解码完全是两回事,必须用urllib.parse.unquote()处理。
客户端优化建议(可选)
如果客户端由你控制,建议直接发送JSON字符串并设置请求头,避免URL编码环节:
# 客户端发送示例 import json from http.client import HTTPConnection conn = HTTPConnection("你的服务器地址") payload = json.dumps({"ID": {"type": "title", "search": "test"}}) conn.request("POST", "/目标路径", payload, headers={"Content-Type": "application/json"}) response = conn.getresponse()
内容的提问来源于stack exchange,提问作者parrot
相关产品推荐
相关产品推荐

