This question already has answers here:
Parsing JSON giving “unexpected token o” error [duplicate]
                                
                                    (8个答案)
                                
                        
                3年前关闭。
            
        

我正在尝试解析JSON字符串

这是我的示例JSON字符串;

{
   "className":"Rectangle",
   "data":{
      "x":685,
      "y":283,
      "width":179,
      "height":169,
      "strokeWidth":5,
      "strokeColor":"#000",
      "fillColor":"rgba(224,224,224,0.28)"
   },
   "id":"c4c49b39-d0cd-f7c7-ea89-356753051de2"
}


这是我要解析的代码;

var obj;
obj = JSON.parse({
    "className": "Rectangle",
    "data": {
        "x": 685,
        "y": 283,
        "width": 179,
        "height": 169,
        "strokeWidth": 5,
        "strokeColor": "#000",
        "fillColor": "rgba(224,224,224,0.28)"
    },
    "id": "c4c49b39-d0cd-f7c7-ea89-356753051de2"
});
console.log(obj.className);


这是抛出的错误


  未捕获到的SyntaxError:JSON中位置1处的意外令牌o


我需要访问X和Y值。

最佳答案

如前所述,您正在尝试读取对象,在javascript中var obj = {}创建一个对象,而var arr = []创建一个数组。

但是:如果您必须解析json,只需在开头和结尾放置'即可告诉解析器它是一个json字符串:

obj = JSON.parse( '{ "className": "Rectangle", "data": { "x": 685, "y": 283, "width": 179, "height": 169, "strokeWidth": 5, "strokeColor": "#000", "fillColor": "rgba(224,224,224,0.28)" }, "id": "c4c49b39-d0cd-f7c7-ea89-356753051de2" }' );


然后console.log( obj.className );将输出Rectangle

09-30 13:24
查看更多