Javascript 哪个是正确的-jsonlint还是JSON.parse?

Javascript 哪个是正确的-jsonlint还是JSON.parse?,javascript,json,string,Javascript,Json,String,我有一个javascript字符串,其中一个键的值是数组的字符串表示形式: { "a": "[\"b\",\"c\"]" } jsonlint.com说这是有效的 JSON.parse('{"a":"[\"b\",\"c\"]"}'); 抛出错误(位置8处的意外标记b)。这似乎是关于包含转义引号的引号——但我的字符串似乎符合www.json.org的标准 // set up an object with this pattern var o = {}; o['a'] = "[\"b\",

我有一个javascript字符串,其中一个键的值是数组的字符串表示形式:

{
  "a": "[\"b\",\"c\"]"
}
jsonlint.com说这是有效的

JSON.parse('{"a":"[\"b\",\"c\"]"}');
抛出错误(位置8处的意外标记b)。这似乎是关于包含转义引号的引号——但我的字符串似乎符合www.json.org的标准

// set up an object with this pattern
var o = {};
o['a'] = "[\"b\",\"c\"]";
console.dir(o.a); // -> "[\"b\",\"c\"]"

// look at the JSON string version of this object
var j = JSON.stringify(o);
console.dir(j); // -> {"a":"[\"b\",\"c\"]"}

// set up this inside a string and try to parse it
var k = '{"a":"[\"b\",\"c\"]"}';
var l = JSON.parse(k); // -> error

谁是对的?jsonlint.com或JSON.parse()?

用javascript编写字符串时,需要转义
\
字符,否则将对其进行解释

const ret=JSON.parse('{“a”:“[\\“b\\”,\\“c\\”]“}”);

控制台日志(ret)您也需要避开反斜杠:

var k='{“a”:“[\\“b\\”,\\“c\\”]“}”;
var l=JSON.parse(k);

控制台日志(l)另一种选择是,使用我一分钟前在谷歌上搜索到的新奇现代的东西

const-ret=JSON.parse(String.raw`{“a”:“[\“b\”,\“c\”]“}`);

控制台日志(ret)反斜杠有其含义。如果要将包含反斜杠的JSON作为字符串文本放入Javascript代码中,则需要确保正确转义它们以保留它们!解析
…这是您实际运行代码的方式。JSONLint可能有错误-检查某个JSON是否有效的唯一方法是对其进行解析。或者:
const ret=JSON.parse(String.raw`{“a”:“[\“b\”,\“c\”]}`)
@NiettheDarkAbsol非常好的答案,你应该把它作为一个备选答案发布。是ES7/8吗?显然是ES2015。