Python将字典转为带转义双引号JSON格式用于curl传参的问题
问题根因
你之前的代码存在3个核心问题,导致转义不生效:
- 传参错误:
requests.get()返回的是Response响应对象,直接传入json.loads()会触发类型错误,应该取响应文本response.text做解析,或者直接调用response.json()拿到解析后的Python字典 - 语法错误:手写的
replace替换逻辑里引号转义写法错误,Python无法正常解析这段代码 - 逻辑缺陷:手动替换单引号的方案只能处理最外层键值对,多层嵌套的字典结构(比如你示例里
TableViewConfig下的Resources子对象)不会被处理,且容易出现值内容里本身带引号的转义错误。
正确实现方法
不需要手动写字符串替换逻辑,直接用Python标准库json做两次序列化就能得到符合要求的转义格式,适配所有嵌套结构,不会出现转义错误:
import requests import json # 第一次请求拿原始数据 first_url = "你的第一个请求地址" resp = requests.get(first_url) # 直接解析响应得到Python字典 origin_data = resp.json() # 两次序列化生成目标格式 # 第一次:字典转无多余空格的标准JSON字符串,和你给的示例格式对齐 standard_json = json.dumps(origin_data, separators=(',', ':')) # 第二次:对JSON字符串做转义,自动给双引号加反斜杠 escaped_str = json.dumps(standard_json).strip('"') # 此时escaped_str就是你需要的传参格式 print(escaped_str)
效果验证
如果原始解析后的字典是{"TableViewConfig": {"displayLength": 50, "Resources": "demo"}},最终输出的escaped_str内容为:
{\"TableViewConfig\":{\"displayLength\":50,\"Resources\":\"demo\"}}
完全匹配curl GET请求data参数要求的传入格式,直接把这个值传给第二个请求的data参数即可。
内容的提问来源于stack exchange,提问作者rose
相关产品推荐
相关产品推荐

