Javascript-修复格式错误的JSON

Javascript-修复格式错误的JSON,javascript,json,Javascript,Json,我从一个我无法控制的源接收JSON。JSON中的某些字段如下所示: "itemName":"lorem ipsum "dolor" sit amet" 或: 当我试图解析它时,它失败了。。。JSON也相当长。我知道如何解决这个问题(查看引号并检查前后的字符),但仅仅解析JSON就相当大了。。。我想知道是否有人知道这样做的简单方法,或者是否有一个库已经处理了它…您可以使用regex基本上解析引号。根据JSON的复杂程度,您可以设置它。这里是一个基本的版本,只需要修复一行。正如其他人所建议的,最好

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

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


当我试图解析它时,它失败了。。。JSON也相当长。我知道如何解决这个问题(查看引号并检查前后的字符),但仅仅解析JSON就相当大了。。。我想知道是否有人知道这样做的简单方法,或者是否有一个库已经处理了它…

您可以使用regex基本上解析引号。根据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' }

使用console.log(itemName)并告诉我你得到的值如果它无效,那么它就不是真正的JSON。他们需要从源头上解决这个问题。你为什么不能向他们报告?你不应该试图处理这件事。应该纠正源头,而不是你的目的。您如何保证您的修复程序能够覆盖源代码中传入数据的所有可能错误?我同意理想情况下源代码会修复它。我知道你说“我无法控制”-但你可能比你意识到的更能控制。他们没有达成一致意见(JSON),学习如何在这种情况下在政治上回击是一项至关重要的职业技能。也就是说,可能有一些脆弱的东西可以通过正则表达式替换一起被破解。不过,我们需要更多的细节:整个JSON是在一行中,还是不同的键在不同的行中?在正确的值和下面的键之间有多少空格?一些站点故意对json响应进行错误格式化,而不是实施任何其他类型的预防措施,以防止未经授权使用公共API(就其可用方式而言,而不是对谁可用而言)-这可能是我的“锡箔帽”然而,阴谋论——因此报告格式错误的json响应可能会引发不必要的反响,特别是在处理政府网站时
[SyntaxError: Unexpected token d]
{ itemName: 'lorem ipsum "dolor", sit amet' }