SyntaxError:位置 1 处 JSON 中的意外标记 o

新手上路,请多包涵

我正在使用控制器中的类型类解析一些数据。我得到的数据如下:

{
   "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;

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

原文由 Soniya Mohan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 739
2 个回答

您发布的 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;

原文由 TimoStaudinger 发布,翻译遵循 CC BY-SA 3.0 许可协议

JSON.parse 函数的第一个参数应该是一个字符串,而你的数据是一个 JavaScript 对象,所以它会将它强制转换为字符串 "[object Object]" 。在传递数据之前,您应该使用 JSON.stringify

 JSON.parse(JSON.stringify(userData))

原文由 huruji 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题