Son*_*han 58 javascript json angularjs
我使用控制器中的类型类解析了一些数据我得到的数据如下:
{
"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"
}
Run Code Online (Sandbox Code Playgroud)
我试着像这样存储数据
var userData = _data;
var newData = JSON.parse(userData).data.userList;
Run Code Online (Sandbox Code Playgroud)
如何将用户列表提取到新变量?
Tim*_*imo 85
您发布的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
Run Code Online (Sandbox Code Playgroud)
JSON.parse()
将输入转换为字符串.toString()
默认情况下,JavaScript对象的方法返回[object Object]
,从而导致观察到的行为.
请尝试以下方法:
var newData = userData.data.userList;
Run Code Online (Sandbox Code Playgroud)
小智 23
函数的第一个参数JSON.parse
应该是一个String,而你的数据是一个JavaScript对象,所以它会转换为一个String [object object]
,你应该JSON.stringify
在传递数据之前使用
JSON.parse(JSON.stringify(userData))
Run Code Online (Sandbox Code Playgroud)
小智 16
就在上面JSON.parse
,使用:
var newData = JSON.stringify(userData)
Run Code Online (Sandbox Code Playgroud)
Pul*_*dha 13
我们还可以添加这样的检查:
function parseData(data) {
if (!data) return {};
if (typeof data === 'object') return data;
if (typeof data === 'string') return JSON.parse(data);
return {};
}
Run Code Online (Sandbox Code Playgroud)
Kou*_*sha 11
JSON.parse
如果没有将其包裹在try-catch
块中,请不要使用:
// payload
let userData = null;
try {
userDate = JSON.parse(payload);
} catch (e) {
// You can read e for more info
// Let's assume the error is that we already have parsed the payload
// So just return that
userData = payload;
}
// Now userData is the parsed result
Run Code Online (Sandbox Code Playgroud)
您只需检查typeof userData
& JSON.parse()
it 仅当它是string
:
var userData = _data;
var newData;
if (typeof userData === 'object')
newData = userData.data.userList; // dont parse if its object
else if (typeof userData === 'string')
newData = JSON.parse(userData).data.userList; // parse if its string
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
209465 次 |
最近记录: |