Postman JSON Body 中直接换行会报错,因 JSON 标准禁止裸换行;必须用"\n"转义(JavaScript环境需双反斜杠),否则解析失败。

Postman JSON Body 中直接写换行会报错
Postman 的 raw 模式下选 JSON 类型时,JSON 标准不支持裸换行(即未转义的回车
或换行
)。如果你在值里直接敲 Enter,Postman 会提示 Syntax error: Unexpected token,因为 JSON 解析器遇到未闭合的字符串就崩了。
- JSON 字符串内部的换行必须用
(LF)或(CRLF)转义,不能直接换行 - Postman 不会自动帮你转义——你粘贴进去的换行符就是原始字符,不是
- 浏览器版 Postman 对粘贴行为更敏感,有时会把剪贴板里的换行转成空格或丢弃
正确填写 JSON 换行的三种方式
核心原则:让换行变成字符串内容的一部分,而不是结构分隔符。
-
手动输入转义序列:在双引号内写
"message": "第一行\n第二行\n第三行"(注意:Postman 的 JSON 编辑器是 JavaScript 环境,所以需双反斜杠\n才能在最终请求体中生成单个) - 用在线工具预处理:把带换行的文本粘到 jsonescape.com,它会输出已转义的字符串,再复制进 Postman 的 JSON 字段
-
用 Pre-request Script 注入(适合动态场景):在
Pre-request Script里写pm.environment.set("multi_line_text", "Line1\nLine2\nLine3");,然后 JSON body 中引用"content": "{{multi_line_text}}"
为什么用 \n 而不是
Postman 的 JSON 编辑器底层用的是 JavaScript JSON.parse() 流程。你在编辑器里输入 "text": "
",JS 引擎会先解析这行代码——此时单个
是语法错误(字符串未结束就被换行打断);而 "text": "\n" 表示字符串字面量里有一个反斜杠 + n,JSON 序列化后才真正变成一个换行符。
- 错误写法:
"note": "hello world"
→ 直接语法报错 - 错误写法:
"note": "hello world"→ JS 解析阶段就失败(未转义的裸 ) - 正确写法:
"note": "hello\nworld"→ 最终发出去的 body 中note值含真实换行
服务端收到的是什么?怎么验证?
别只信 Postman 的界面显示——它常把 \n 渲染成换行,但实际发没发出,得看「发送后的请求体」或服务端日志。
- 点击右上角
Code→ 选curl,检查生成的-d参数里是否含\n(说明已正确转义) - 用本地 mock 接口(如
nc -l 8000)抓原始 HTTP body,确认换行符是字节(0x0A),不是两个字符\n - 如果后端是 Node.js/Python/Java,打印原始 request body 的 repr 或 hex,避免被日志系统二次美化


















