火山引擎API要求JSON中双引号等6个字符必须转义,尤其双引号和反斜杠未转义会导致90%的400错误;推荐用json.dumps()自动生成合法JSON,避免手动拼接。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当你在火山引擎 API 请求体中传递含双引号的用户原文(比如“他说:‘你好’”),直接拼接会导致 JSON 结构崩坏,后端立刻返回 400 错误——因为火山引擎使用严格 RFC 8259 解析器,【任何未转义的双引号都会被识别为字符串结束符,后续内容全部失效】。
确认原始字符串里哪些字符必须转义
只需处理这 6 个字符:双引号(")、反斜杠()、换行( )、回车( )、制表符( )、退格()。其中 【双引号和反斜杠是高频出错点,90% 的 400 都源于这两者未转义】。
例如用户输入:他敲下 "print('hello')" 并说:"太棒了!"
错误写法(直接拼进 JSON):{"content": "他敲下 "print('hello')" 并说:"太棒了!""}
正确写法(仅双引号和内部反斜杠需转义):{"content": "他敲下 "print('hello')" 并说:"太棒了!""}
Python 中安全生成 JSON 字符串
方法一:用 json.dumps() 自动转义(推荐)
把原始字符串作为 Python 字典值传入,让标准库处理所有转义逻辑:
import json
raw = '他敲下 "print('hello')" 并说:"太棒了!"'
payload = {"content": raw}
json_str = json.dumps(payload, ensure_ascii=False)
# 输出:{"content": "他敲下 "print('hello')" 并说:"太棒了!""}
这一步不能跳过,手动拼接字符串永远不可靠。
方法二:只对 content 字段单独转义(适用于已拼好大 JSON 字符串的遗留代码)
from json import encoder
escaped = encoder.py_encode_basestring_ascii(raw) # 返回带引号的转义字符串
# 注意:返回值含首尾双引号,如 ""he said \"ok\""",需去掉再塞入你的模板
手写 JSON 时快速检查转义是否完整
第一步:复制你的完整 payload 字符串
第二步:粘贴到 https://jsonlint.com/ 点击 Validate
第三步:若报错定位在某一行,立即看该行中所有英文双引号前是否都有反斜杠;若看到 \" 或 \\,说明你多转义了一次——【JSON 只需一级转义,Python 字符串字面量里的双反斜杠是显示效果,实际只存一个】。
第四步:重点检查用户输入中是否混入中文全角引号“”或「」,这些字符无需转义,但若误用英文半角引号替换它们,就会引入未转义风险。











