
第三方 API 返回的 JSON 中含有转义换行符(如 )是完全符合 JSON 规范的,可直接用标准解析器(如 JSON.parse())处理,无需预清洗;真正需关注的是解析后对字符串内容的规范化处理。
第三方 api 返回的 json 中含有转义换行符(如 ` `)是完全符合 json 规范的,可直接用标准解析器(如 `json.parse()`)处理,无需预清洗;真正需关注的是解析后对字符串内容的规范化处理。
该响应看似“异常”,实则完全合法:JSON 标准明确允许字符串中包含转义的换行符(
)、制表符( )甚至 Unicode 字符。您看到的:
{"history":["1.) 01- AUTHOR - TOPIC / DATE
","2.) Author Topic (May-2022)
", ...], ...}
中的
是已转义的换行字符(即字面量 + n),而非原始换行符(如
或裸回车),因此它属于 JSON 字符串值的正常组成部分,不是格式错误,也不影响解析。
✅ 正确做法:直接解析,再清理语义内容
以下为 JavaScript 示例(其他语言同理):
const rawResponse = `{"history":["1.) 01- AUTHOR - TOPIC \/ DATE\n","2.) Author Topic (May-2022)\n","18.) Author Topic (July-2022)\n","19.) Author Topic 2021\n"],"title":"Author email topic (June-2022)","art":"https:\/\/some_url.com\/cp\/library\/image.png","ulistener":"10","listeners":"2","bitrate":"128","djusername":"No DJ","djprofile":"https:\/\/some_url.com\/cp\/musiclibrary\/nodj.png"}`;
try {
const data = JSON.parse(rawResponse); // ✅ 完全可行,无报错
console.log('Parsed successfully:', data.title);
// 清理 history 条目:去除末尾换行与多余空格
const cleanedHistory = data.history.map(item =>
item.trim().replace(/s+$/, '') // 或更彻底:item.replace(/
+$/g, '').trim()
);
console.log('Cleaned history:', cleanedHistory);
} catch (err) {
console.error('JSON parsing failed:', err.message); // 仅当真格式错误时触发
}
⚠️ 注意事项:
- 不要尝试用正则或字符串替换“修复”原始 JSON 字符串再解析——这极易破坏合法转义(如
/、\),导致解析失败; - 若发现
JSON.parse()报错,请检查是否混入了未转义的原始换行符(即 JSON 字符串中出现真实回车,而非),此时服务端确实违反了 JSON 规范,需联系对方修复; - 对于前端展示,建议统一调用
.trim()或正则清理/;若用于搜索或比对,还应考虑标准化空白符(如将连续空白替换为单个空格)。
总结:这不是 JSON 解析问题,而是数据呈现层的文本规范化任务。信任标准解析器,把精力放在解析后的数据清洗与业务逻辑上,才是高效、稳健的实践方式。











