JSON解析无法转换为对象

时间:2020-04-25 16:01:26

标签: javascript json object

我的API返回用户对象和格式如下=>

{'id': '1', 'username': 'admin', 'image': 'https://user/testing.png', 'phno': '123'}

首先,我执行JSON.stringify,然后检查此行的类型是否为字符串。

所以我使用JSON.parse来获取对象,但是它仍然是字符串并且无法获取,就像user.id是未定义的。

我怎么能像user.iduser.username,...?

console.log(user);
console.log(user.user);

var test = JSON.stringify(user.user);
console.log(typeof(test));

var test1 = JSON.parse(test);
console.log(test1.id);

enter image description here

3 个答案:

答案 0 :(得分:2)

我认为问题可能在于您的API返回带有单引号的JSON数据,而JavaScript无法正确解析它。检查您在服务器端使用的JSON序列化程序。它应该类似于:{"id": "1", "username": "admin", "image": "https://user/testing.png", "phno": "123"}

答案 1 :(得分:0)

此解决方案适用于您的数据:

var data = '{"id": "1", "username": "admin", "image": "https://user/testing.png", "phno": "123"}';
var user = JSON.parse(data);
console.log(user.id);

答案 2 :(得分:0)

似乎您没有获得确切的用户json。问题可能是后端。

const obj = `{"user":"{\\"id\\": \\"1\\", \\"username\\": \\"admin\\", \\"image\\": \\"https://user/testing.png\\", \\"phno\\": \\"123\\"}"}`
console.log(obj)
// First get value of user.
let user = JSON.parse(obj).user
console.log(typeof user) //string
// parse again, since user is string
user = JSON.parse(user)
console.log(user.username)
console.log(user.id)