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

如何生成含单反斜杠双引号格式的Python JSON内容对象?

问题:JSON嵌套字符串出现多余反斜杠的解决方法

现有Python代码如下:

import json

data = {"name": "John", "age": 30, "city": "New York"}
print(data)
json_string = json.dumps(data, indent=4)
print(json_string)
json_string_escaped = json_string.replace('"','\\"')
print(json_string_escaped)
dataone = {"json_string": json_string_escaped}
print(dataone)

执行后,json_string_escaped的输出符合预期:

{
    \"name\": \"John\",
    \"age\": 30,
    \"city\": \"New York\"
}

但将转义后的字符串放入dataone字典并打印时,出现了多余的反斜杠:

{'json_string': '{
    \\\"name\\\": \\\"John\\\",
    \\\"age\\\": 30,
    \\\"city\\\": \\\"New York\\\"
}'}

需要让dataone对应的JSON格式中,字符串仅保留单反斜杠+双引号的格式,以符合REST API的要求。


解决方法

原因分析

你看到的多余反斜杠是Python打印字典时的字符串表示形式导致的——Python会把字符串里的单个反斜杠显示为两个(因为反斜杠本身是转义符),但这并不代表字符串实际存储的内容。真正要生成符合API要求的JSON格式,不需要手动转义,应该交给json模块自动处理。

正确代码

直接将未手动转义的json_string放入字典,再对整个字典执行一次json.dumps,就能得到正确的嵌套JSON格式:

import json

data = {"name": "John", "age": 30, "city": "New York"}
json_string = json.dumps(data, indent=4)
# 不需要手动replace转义
dataone = {"json_string": json_string}
# 对整个字典做JSON序列化,自动处理嵌套字符串的转义
final_json = json.dumps(dataone, indent=4)
print(final_json)

输出结果

执行后会得到符合API要求的格式:

{
    "json_string": "{\n    \"name\": \"John\",\n    \"age\": 30,\n    \"city\": \"New York\"\n}"
}

如果需要保留换行的格式化输出(而非转义后的\n),可以使用json.dumps的ensure_ascii=False参数,或者直接将最终的JSON字符串用于API请求——API接收的是标准JSON格式,会自动解析其中的转义符。

为什么手动转义会出问题

手动用replace('"', '\\"')转义后,字符串里的每个双引号前都有一个反斜杠。当把这个字符串放入字典后,Python在打印字典的repr形式时,会把每个反斜杠再转义一次(变成\\),所以你看到了\\\"。但实际字符串内容是正确的,只是打印显示的问题。不过手动转义容易出错,交给json模块处理才是标准做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:37:36