JSON:解析时出错
2015-04-04
232
我有以下
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 查看器对相同字符串的正确输出。
3个回答
使用 JSON 查看器与在 JS 代码中使用代码有所不同。如 @Jonathan 所述,您应该对 JSON 字符串进行双重转义。
JSON.parse('[["abc","{\\"icon\\":\\"adjust\\",\\"prefix\\":\\"fa\\",\\"markerColor\\":\\"red\\"}"],["xyz","{\\"icon\\":\\"archive\\",\\"prefix\\":\\"fa\\",\\"markerColor\\":\\"green\\"}"],["azs","{\\"icon\\":\\"asterisk\\",\\"prefix\\":\\"fa\\",\\"markerColor\\":\\"darkred\\"}"]]');
That Guy
2015-04-04
您需要在字符串文字内对转义符 (
\
) 本身进行转义。
此外,您可以分两次解析此数据。
const data = `[["abc","{\\"icon\\":\\"adjust\\",\\"prefix\\":\\"fa\\",\\"markerColor\\":\\"red\\"}"],["xyz","{\\"icon\\":\\"archive\\",\\"prefix\\":\\"fa\\",\\"markerColor\\":\\"green\\"}"],["azs","{\\"icon\\":\\"asterisk\\",\\"prefix\\":\\"fa\\",\\"markerColor\\":\\"darkred\\"}"]]`;
const firstPass = JSON.parse(data);
const secondPass = firstPass.map(([k, v]) => [k, JSON.parse(v)]);
console.log(secondPass);
.as-console-wrapper { top: 0; max-height: 100% !important; }
Mr. Polywhirl
2024-06-19
您的 json 结构无效。您应该改用以下格式(不带斜杠):
'[["abc",["icon":"adjust","prefix":"fa","markerColor":"red"]],["xyz",["icon":"archive","prefix":"fa","markerColor":"green"]],["azs",["icon":"asterisk","prefix":"fa","markerColor":"darkred"]]'
hamed
2015-04-04