1

我有这个变量,它是类似 json 的字符串,解析到对象时出现错误

"SyntaxError: JSON.parse: expected ',' or '}' after property value in object"

代码:

var obj = JSON.parse('{"data":[{"from":"{\"category\":\"Bank/financial institution\"}"}],"statusCode":200}');

似乎该功能不适用于嵌套"{\"category\":\"Bank/financial institution\"}",用简单的文本(例如“123”)替换就可以了,有没有办法处理这种情况?
谢谢。

4

3 回答 3

3

前面的\(反斜杠)字符"category是不必要的。

没有必要在单引号字符串中转义双引号。

于 2012-12-19T09:21:49.427 回答
2

您的字符串确实格式错误。

你要么想要:

var obj = JSON.parse('{"data":[{"from":{"category":"Bank/financial institution"}}],"statusCode":200}');

...(例如,没有引号from和没有反斜杠的值),当反序列化时,会产生一个对象,其属性称为datawhich 是一个数组,它的第一个条目是一个对象,其属性称为fromwhich 是一个对象Live示例| 来源

或者

var obj = JSON.parse('{"data":[{"from":"{\\"category\\":\\"Bank/financial institution\\"}"}],"statusCode":200}');

...(例如,在值周围保留引号from并确保反斜杠出现在 JSON 中,这意味着转义它们)在您到达 之前是相同的from,它是一个字符串Live Example | 来源

于 2012-12-19T09:25:56.130 回答
1

删除内部对象的引号

var obj = {
    "data": [{
        "from": {
            "category": "Bank/financial institution"
         }
     }],
     "statusCode": 200
}
于 2012-12-19T09:24:07.770 回答