语法错误:JSON 中位置 1 处的意外标记 o

2022-08-29 23:31:45

我正在使用控制器中的类型类来分析一些数据。我获取的数据如下:

{  
   "data":{  
      "userList":[  
         {  
            "id":1,
            "name":"soni"
         }
      ]
   },
   "status":200,
   "config":{  
      "method":"POST",
      "transformRequest":[  
         null
      ],
      "transformResponse":[  
         null
      ],
      "url":"/home/main/module/userlist",
      "headers":{  
         "rt":"ajax",
         "Tenant":"Id:null",
         "Access-Handler":"Authorization:null",
         "Accept":"application/json, text/plain, */*"
      }
   },
   "statusText":"OK"
}

我试图像这样存储数据

var userData = _data;
var newData = JSON.parse(userData).data.userList;

如何将用户列表提取到新变量?


答案 1

您发布的JSON看起来很好,但是在您的代码中,它很可能不再是JSON字符串,而是已经是一个JavaScript对象。这意味着,不再需要解析。

您可以自己测试,例如在Chrome的控制台中:

new Object().toString()
// "[object Object]"

JSON.parse(new Object())
// Uncaught SyntaxError: Unexpected token o in JSON at position 1

JSON.parse("[object Object]")
// Uncaught SyntaxError: Unexpected token o in JSON at position 1

JSON.parse()将输入转换为字符串。默认情况下,JavaScript 对象的方法返回 ,导致观察到的行为。toString()[object Object]

请尝试以下操作:

var newData = userData.data.userList;

答案 2

该函数的第一个参数应该是一个字符串,并且您的数据是一个JavaScript对象,因此它将强制将其强制为字符串。在传递数据之前,您应该使用:JSON.parse"[object Object]"JSON.stringify

JSON.parse(JSON.stringify(userData))