2015-04-04 150 views
1

我有以下JSON(有效)刺痛。JSON:解析时出错

[["abc","{\"icon\":\"adjust\",\"prefix\":\"fa\",\"markerColor\":\"red\"}"],["xyz","{\"icon\":\"archive\",\"prefix\":\"fa\",\"markerColor\":\"green\"}"],["azs","{\"icon\":\"asterisk\",\"prefix\":\"fa\",\"markerColor\":\"darkred\"}"]] 

它给了错误,当我尝试使用JSON.parse功能 这里解析的是,我使用的解析代码。

JSON.parse('[["abc","{\"icon\":\"adjust\",\"prefix\":\"fa\",\"markerColor\":\"red\"}"],["xyz","{\"icon\":\"archive\",\"prefix\":\"fa\",\"markerColor\":\"green\"}"],["azs","{\"icon\":\"asterisk\",\"prefix\":\"fa\",\"markerColor\":\"darkred\"}"]]'); 

它给控制台Uncaught SyntaxError: Unexpected token i

这里的错误是使用JSON在线观看相同的字符串正确的输出。 Correct Output by same string using online JSON viewer

+1

双逃脱引号 - '\\ “'曾经为JSON字符串的内容,再次为JavaScript字符串字面它包裹在 – 2015-04-04 05:10:26

+0

减少'\”'来''''不起作用,尽管'\\''为'\\''起作用 – muaaz 2015-04-04 05:22:51

回答

1

当您使用JSON浏览器,它是从当您使用代码在你的JS代码不同。就像@Jonathan所说的那样,你应该加倍逃避你的刺痛。

JSON.parse('[["abc","{\\"icon\\":\\"adjust\\",\\"prefix\\":\\"fa\\",\\"markerColor\\":\\"red\\"}"],["xyz","{\\"icon\\":\\"archive\\",\\"prefix\\":\\"fa\\",\\"markerColor\\":\\"green\\"}"],["azs","{\\"icon\\":\\"asterisk\\",\\"prefix\\":\\"fa\\",\\"markerColor\\":\\"darkred\\"}"]]');

0

您的json结构无效。你应该使用这个(没有斜杠):

'[["abc",["icon":"adjust","prefix":"fa","markerColor":"red"]],["xyz",["icon":"archive","prefix":"fa","markerColor":"green"]],["azs",["icon":"asterisk","prefix":"fa","markerColor":"darkred"]]' 
+0

在提供的JSON中有一个JSON字符串 例如:'“{\”icon \“:\”adjust \“, “前缀\”:\“fa \”,\“markerColor \”:\“red \”}“'您可以将上述JSON视为密钥对值 '[”abc“,”{\“icon \” :\“调整\”,\“前缀\”:\“fa \”,\“markerColor \”:\“red \”}“]'这里'abc'是关键字,''\”icon \ \ “调整\”,\ “前缀\”:\“发\ “,\”markerColor \“:\”red \“}”'值为 – muaaz 2015-04-04 05:16:48

+0

这不一定是无效的,只是不常见。 JSON中的一些字符串值本身就包含更多的JSON:'JSON.stringify(['abc',JSON.stringify({icon:'adjust'})])' – 2015-04-04 05:18:33

+0

'替换'\“'为'\\” '为我工作。顺便说一句,上面的字符串正常工作[这里](https://www.jsoneditoronline.org/) – muaaz 2015-04-04 05:25:55