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

如何从字符串提取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,提问作者Сергей Викторович

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:35:14