1
votes

Analyse Json non convertie en objet

Mon objet utilisateur de retour API et le format sont comme ça =>

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);

Je fais d'abord JSON.stringify et je vérifie que le type de cette ligne est une chaîne .

Donc, j'utilise JSON.parse pour obtenir un objet mais sa chaîne fixe et je ne peux pas l'obtenir aime user.id n'est pas défini.

Comment puis-je obtenir comme user.id , user.username,...?

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

 entrez la description de l'image ici


0 commentaires

3 Réponses :


0
votes

Cette solution fonctionne pour vos données:

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


1 commentaires

Un avis - Le format JSON est censé contenir ", pas des guillemets simples



2
votes

Je pense que le problème vient du fait que votre API renvoie des données JSON avec des guillemets simples et que JavaScript n'est pas en mesure de les analyser correctement. Vérifiez le sérialiseur JSON que vous utilisez côté serveur. Il devrait être comme: {"id": "1", "username": "admin", "image": "https: //user/testing.png", "phno": "123"} < / code>.


0 commentaires

0
votes

Il semble que vous n'obteniez pas l'utilisateur exact json. Le problème peut être lié au backend.

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 commentaires