如何在JavaScript中清理OpenAI GPT生成的不规范JSON
修复AI生成的不规范JSON及兼容解析方案
手动转换为标准JSON格式
可以通过正则表达式批量修正未正确转义的特殊字符,将单个反斜杠替换为双反斜杠,同时处理字符串内未转义的双引号:
function normalizeJson(rawJson) { // 转义未被反斜杠包裹的双引号 let fixed = rawJson.replace(/(?<!\\)"/g, '\\"'); // 转义未被反斜杠包裹的换行符 fixed = fixed.replace(/(?<!\\)\n/g, '\\n'); return fixed; } // 使用示例 const badJson = `{ "question": "When are you flying to \"Miami\"?\nPlease provide departure time." }`; const validJson = normalizeJson(badJson); try { const result = JSON.parse(validJson); console.log(result); } catch (error) { console.error('JSON解析失败:', error); }
使用兼容宽松JSON的解析库
如果手动处理容易遗漏特殊字符,推荐使用专门的库来解析非标准JSON:
json5
支持解析多种不符合严格JSON规范的格式,包括未正确转义的引号、换行符等:
// 安装依赖:npm install json5 const JSON5 = require('json5'); const badJson = `{ "question": "When are you flying to \"Miami\"?\nPlease provide departure time." }`; const parsedData = JSON5.parse(badJson); console.log(parsedData);
dirty-json
专为修复和解析非标准JSON设计,能自动处理常见的转义错误:
// 安装依赖:npm install dirty-json const dirtyJson = require('dirty-json'); const badJson = `{ "question": "When are you flying to \"Miami\"?\nPlease provide departure time." }`; dirtyJson.parse(badJson) .then(data => console.log(data)) .catch(err => console.error('解析错误:', err));
内容的提问来源于stack exchange,提问作者Andrei V
相关产品推荐
相关产品推荐

