首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪个是正确的- jsonlint还是JSON.parse?

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

Stack Overflow用户
提问于 2019-06-13 09:12:02
回答 3查看 166关注 0票数 2

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

代码语言:javascript
复制
{
  "a": "[\"b\",\"c\"]"
}

jsonlint.com说这是有效的。

代码语言:javascript
复制
JSON.parse('{"a":"[\"b\",\"c\"]"}');

抛出一个错误(位置8处为意外标记b)。这似乎是关于包含转义引号的引号,但我的字符串似乎符合www.json.org的标准。

代码语言:javascript
复制
// 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()?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-13 09:14:55

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

代码语言:javascript
复制
const ret = JSON.parse('{"a":"[\\"b\\",\\"c\\"]"}');

console.log(ret);

票数 4
EN

Stack Overflow用户

发布于 2019-06-13 09:16:51

作为另一种选择,使用我不知道的时髦的东西,直到一分钟前我在谷歌上搜索.

代码语言:javascript
复制
const ret = JSON.parse(String.raw`{"a":"[\"b\",\"c\"]"}`);

console.log(ret);

票数 3
EN

Stack Overflow用户

发布于 2019-06-13 09:15:40

你也需要避开反斜杠:

代码语言:javascript
复制
var k = '{"a":"[\\"b\\",\\"c\\"]"}';
var l = JSON.parse(k);
console.log(l);

您还可以使用String.raw标记函数(仅限ES6):

代码语言:javascript
复制
var k = String.raw`{"a":"[\"b\",\"c\"]"}`;
var l = JSON.parse(k);
console.log(l);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56577146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档