Javascript - 修复格式错误的JSON

时间:2015-07-04 14:37:59

标签: javascript json

我从我无法控制的来源收到JSON。 JSON中的一些字段如下所示:

"itemName":"lorem ipsum "dolor" sit amet"

或:

"itemName":"lorem ipsum "dolor", sit amet"

当我尝试解析它时失败... JSON也很长。我知道如何解决这个问题(查看引号并检查前后的字符),但只是解析JSON这是一项相当大的任务......我想知道是否有人知道一个简单的方法来做到这一点,或者如果有一个图书馆已经处理好了......

1 个答案:

答案 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' }