我有一个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()?
发布于 2019-06-13 09:14:55
在用javascript编写字符串时,需要转义\字符,否则将对其进行解释。
const ret = JSON.parse('{"a":"[\\"b\\",\\"c\\"]"}');
console.log(ret);
发布于 2019-06-13 09:16:51
作为另一种选择,使用我不知道的时髦的东西,直到一分钟前我在谷歌上搜索.
const ret = JSON.parse(String.raw`{"a":"[\"b\",\"c\"]"}`);
console.log(ret);
发布于 2019-06-13 09:15:40
你也需要避开反斜杠:
var k = '{"a":"[\\"b\\",\\"c\\"]"}';
var l = JSON.parse(k);
console.log(l);
您还可以使用String.raw标记函数(仅限ES6):
var k = String.raw`{"a":"[\"b\",\"c\"]"}`;
var l = JSON.parse(k);
console.log(l);
https://stackoverflow.com/questions/56577146
复制相似问题