如何从字符串提取JSON?POST请求字符串转JSON方法
从POST请求字符串中提取并转换JSON的方法
核心思路
HTTP POST请求的结构是请求头 + 空行(\r\n\r\n) + 请求体,其中请求体就是你需要的JSON内容。只需通过分隔符\r\n\r\n拆分字符串,就能提取出JSON部分,再用Python的json模块解析即可。
具体实现代码
import json # 原始POST请求字符串 request_str = "POST / HTTP/1.1\r\nHost: 11.112.19.113:5111\r\nUser-Agent: Yandex.Forms/1.0\r\nContent-Length: 187\r\nAccept: */*\r\nAccept-Encoding: gzip, deflate, br\r\nConnection: keep-alive\r\nContent-Type: application/json\r\nX-Delivery-Id: 139195725\r\nX-Form-Answer-Id: 1278204217\r\nX-Form-Id: 63976cbbc09c022dcd6a47e3\r\n\r\n{\"jsonrpc\": \"2.0\", \"method\": \"\", \"params\": {\"message\": \"{\\\"\\u0421\\u043e\\u043e\\u0431\\u0449\\u0435\\u043d\\u0438\\u0435\\\": \\\"my test message\\\"}\", \"email\": \"jjrkl@yandex.ru\"}, \"id\": \"139195725\"}" filename = 'test.json' # 1. 拆分请求头和请求体,获取JSON字符串部分 _, json_str = request_str.split('\r\n\r\n', maxsplit=1) # 2. 解析JSON字符串为Python字典 try: data = json.loads(json_str) # 额外处理:如果params里的message也是转义的JSON,可进一步解析 if 'params' in data and 'message' in data['params']: data['params']['message'] = json.loads(data['params']['message']) # 3. 将解析后的数据写入文件 with open(filename, 'w', encoding='utf-8') as f: json.dump(data, f, indent=2, ensure_ascii=False) print("JSON提取并转换成功,已保存到文件") except json.JSONDecodeError as e: print(f"JSON解析失败:{e}")
关键说明
split('\r\n\r\n', maxsplit=1):只拆分一次,确保即使JSON内容里有换行符也不会被误拆分。json.loads():将JSON字符串转为Python字典,方便后续数据处理。ensure_ascii=False:保存文件时保留原始Unicode字符(比如示例中的俄文),避免不必要的转义。- 异常处理:捕获JSON解析错误,避免程序因格式问题崩溃。
内容的提问来源于stack exchange,提问作者Сергей Викторович
相关产品推荐
相关产品推荐

