如何去除API返回JSON中的转义字符与换行符?
清理API返回的嵌套JSON格式异常问题
问题背景
API返回的数据中,content和hierarchy字段为嵌套的JSON字符串,包含大量转义字符(\n、\r、\t)及转义斜杠,直接使用普通字符替换或单次JSON解析无法完成清理。
解决步骤
核心思路:先解析外层JSON,再单独处理嵌套的JSON字符串字段,补全异常结构后完成解析与清理。
1. 解析外层JSON
先将API返回的原始字符串解析为JS对象,获取带转义的content和hierarchy字段值:
// apiResponse 为API返回的原始字符串 const rawData = JSON.parse(apiResponse);
2. 处理content字段
原始content字符串存在未闭合的JSON结构,需先补全再清理转义字符:
let cleanedContentStr = rawData.content; // 补全末尾缺失的JSON闭合标记(根据原始数据结构调整) cleanedContentStr = cleanedContentStr.replace(/<p>$/, '') + '}}'; // 移除所有转义的换行、回车、制表符 cleanedContentStr = cleanedContentStr.replace(/\\n|\\r|\\t/g, ''); // 解析为JSON对象 const contentData = JSON.parse(cleanedContentStr);
3. 处理hierarchy字段
hierarchy结构完整,直接清理转义字符后解析:
let cleanedHierarchyStr = rawData.hierarchy.replace(/\\n|\\r|\\t/g, ''); const hierarchyData = JSON.parse(cleanedHierarchyStr);
4. 可选:格式化输出
若需要可读性强的格式化字符串,使用JSON.stringify添加缩进:
const formattedContent = JSON.stringify(contentData, null, 2); const formattedHierarchy = JSON.stringify(hierarchyData, null, 2);
原方法无效原因
- 直接使用
replace(/\\n/g, ''):未先解析外层JSON,无法定位嵌套字符串中的转义字符。 - 直接
JSON.stringify(JSON.parse(json object)):仅处理外层JSON结构,未解析content和hierarchy字段内的嵌套JSON字符串。
内容的提问来源于stack exchange,提问作者Mitul Panchal
相关产品推荐
相关产品推荐

