1
votes

Analyser le Javascript de réponse JSON imbriqué

Je sais qu'il y a plusieurs fils sur ce sujet mais j'ai parcouru plus de 30 fils sans succès. J'ai réussi à analyser une réponse JSON pour qu'elle ressemble à ceci:

    console.log(json[0].id);

en utilisant ce code

    console.log(json[0]);
    console.log(json.id);

Maintenant, je veux accéder au " id "," name "etc. ET le" id "et" name "pour la balise" entity ". Jusqu'à présent, j'ai essayé:

    let json = JSON.parse(body);
    console.log(json); 

qui renvoie tous les deux undefined

J'ai également essayé

   {
    "1": {
       "id": "1",
       "name": "Fruit",
       .
       .
       .
       "entities": {
          "1": {
            "id": "1",
            "name": "blue bird",
       .
       .
       .
       "status": "1"
    },
   "2": {

ce qui donne une erreur

Des idées?


3 commentaires

ressemble à votre première clé est json ["1"]


LOL solution facile haha ​​merci!


Bien sûr, je vais ajouter comme réponse


3 Réponses :


2
votes

Dans ce cas, votre première clé est 1 , vous pouvez donc y accéder avec json[1 .

const json = {
  "1": {
    "id": "1",  
    "name": "Fruit"
  },
  "2": {
    "id": "2",  
    "name": "Veggies"
  }
};

console.log(json[1]);


0 commentaires

0
votes

Dans ce json, vous pouvez accéder à l'identifiant par

{ 
"elements": [
    { "id" : 1, "name" : "fruit" },
    { "id" : 2, "name" : "vegetable" }
]
}

Mais je pense que tout d'abord votre json n'est pas correctement écrit, vous devriez avoir quelque chose comme

json.1.id

comme ça, json.elements est une collection / tableau, et vous pouvez boucler, compter, ou toute autre chose que vous ne pourrez pas faire car votre json ressemble à une liste super lourde de propriétés différentes (il ne sait pas que json.1 et json.2 sont le même type d'objets.


0 commentaires

0
votes
const jsonData = JSON.parse(body);

for (const i in jsonData) {
  for (const j in jsonData[i]) {
    console.log('${i}: ${jsonData[i][j]}');
  }
} 

0 commentaires