我正在解析一些数据使用类型类在我的控制器。我得到的数据如下:
{
"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;
如何提取用户列表到一个新变量?
你发布的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;
当解析JSON数据或String时抛出意外的'O'错误。
如果它是字符串,它已经被字符串化了。解析最终会出现意外的“O”错误。
我面对类似的(尽管在不同的上下文中),我通过删除JSON生成器解决了以下错误。
@POST
@Produces({ **MediaType.APPLICATION_JSON**})
public Response login(@QueryParam("agentID") String agentID , Officer aOffcr ) {
return Response.status(200).entity("OK").build();
}
响应包含“OK”字符串返回。
标记为@Produces({** mediattype . application_json})**的注释试图将字符串解析为JSON格式,结果出现意外的“O”。
删除@Produces({mediattype . application_json})可以正常工作。
输出:OK
请注意:
同样,在客户端,如果你发出ajax请求并使用JSON.parse("OK"),它会抛出意想不到的令牌'O'
O是字符串的第一个字母
JSON.parse(object)与jQuery.parseJSON(object)比较;
JSON。parse('{"name":"Yergalem", "city":"Dover"}');——工作正常