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'}
3 Réponses :
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);
Un avis - Le format JSON est censé contenir ", pas des guillemets simples
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>.
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)