我从我无法控制的来源收到JSON。 JSON中的一些字段如下所示:
"itemName":"lorem ipsum "dolor" sit amet"
或:
"itemName":"lorem ipsum "dolor", sit amet"
当我尝试解析它时失败... JSON也很长。我知道如何解决这个问题(查看引号并检查前后的字符),但只是解析JSON这是一项相当大的任务......我想知道是否有人知道一个简单的方法来做到这一点,或者如果有一个图书馆已经处理好了......
答案 0 :(得分:1)
您可以使用正则表达式来基本解析引号。根据JSON的复杂程度,您可以进行设置。这是修正一行的基本版本。正如其他人所建议的那样,你最好在源头修复这个问题。
var str = '"itemName":"lorem ipsum "dolor", sit amet"';
tryParse(str);
// first capture (p1) grabs the key, (p2) grabs the val
str.replace(/(".*:"?")(.*)"/gi, function(match, p1, p2) {
str = p1 + p2.replace(/"/g, '\\"') + '"';
});
tryParse(str);
function tryParse(str) {
str = '{' + str + '}';
try {
console.log(JSON.parse(str));
} catch (e) {
console.error(e);
}
}
结果
[SyntaxError: Unexpected token d]
{ itemName: 'lorem ipsum "dolor", sit amet' }