Json разобрать не преобразовать в объект - PullRequest
1 голос
/ 25 апреля 2020

My API возвращает пользовательский объект и формат такой: =>

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

Сначала я делаю JSON .stringify и проверяю тип этой строки - строка.

Так что я использую JSON .parse, чтобы получить объект, но он по-прежнему является строкой и не может его получить, нравится user.id не определено.

Как я могу получить как user.id, user.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 ]

2 голосов
/ 25 апреля 2020

Я думаю, что проблема может заключаться в том, что ваш API возвращает JSON данные с одинарными кавычками, а JavaScript не может их правильно проанализировать. Проверьте, какой сериализатор JSON вы используете на стороне сервера. Это должно быть как: {"id": "1", "username": "admin", "image": "https://user/testing.png", "phno": "123"}.

0 голосов
/ 25 апреля 2020

Похоже, вы не получаете точного пользователя 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)
0 голосов
/ 25 апреля 2020

Это решение работает для ваших данных:

var data = '{"id": "1", "username": "admin", "image": "https://user/testing.png", "phno": "123"}';
var user = JSON.parse(data);
console.log(user.id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...