Question Accéder aux éléments de l'objet JSON sans connaître les noms de clé


Voici mon json:

{"d":{"key1":"value1",
      "key2":"value2"}}

Existe-t-il un moyen d'accéder aux clés et aux valeurs (en javascript) de ce tableau sans savoir quelles sont les clés?

La raison pour laquelle json est structuré de la sorte est que la méthode Web que j'appelle via jquery renvoie un dictionnaire. S'il est impossible de travailler avec ce qui précède, que dois-je changer sur la façon dont je retourne les données?

Voici un aperçu de ma méthode web:

<WebMethod()> _
Public Function Foo(ByVal Input As String) As Dictionary(Of String, String)
    Dim Results As New Dictionary(Of String, String)

    'code that does stuff

    Results.Add(key,value)
    Return Results
End Function

20
2018-02-25 05:09


origine


Réponses:


Vous pouvez utiliser le for..in construire pour parcourir les propriétés arbitraires de votre objet:

for (var key in obj.d) {
    console.log("Key: " + key);
    console.log("Value: " + obj.d[key]);
}

46
2018-02-25 05:14



Est-ce ce que vous recherchez?

var data;
for (var key in data) {
   var value = data[key];
   alert(key + ", " + value);
}

8
2018-02-25 05:12



Utilisez pour la boucle pour obtenir la même chose.

var dlist = { country: [ 'ENGLAND' ], name: [ 'CROSBY' ] }

for(var key in dlist){
     var keyjson = dlist[key];
     console.log(keyjson)
   }


3
2017-12-22 11:00



En utilisant le mot "b", vous utilisez toujours le nom de la clé.

var info = {
"fname": "Bhaumik",
"lname": "Mehta",
"Age": "34",
"favcolor": {"color1":"Gray", "color2":"Black", "color3":"Blue"}
};

Regardez l'extrait ci-dessous.

for(key in info) {
  var infoJSON = info[key];
  console.log(infoJSON);
}

Le résultat serait,

Bhaumik
Mehta
Object {color1: "Gray", color2: "Black", color3: "Blue"} 

Vous ne voulez pas que cette dernière ligne apparaisse? Essayez le code suivant:

for(key in info) {
  var infoJSON = info[key];
    if(typeof infoJSON !== "object"){
       console.log(infoJSON);
  }
}

Cela éliminera Object {color1: “Gray”, color2: “Black”, color3: “Blue”} de apparaître dans la console.

Nous devons maintenant parcourir la variable infoJSON pour obtenir la valeur du tableau. Regardez la paix de code suivante.

for(key in info) {
    var infoJSON = info[key];
    if (typeof infoJSON !== "object"){
       console.log(infoJSON);
    }
 }

for(key1 in infoJSON) {
    if (infoJSON.hasOwnProperty(key1)) {
       if(infoJSON[key1] instanceof Array) {
          for(var i=0;i<infoJSON[key1].length;i++) {
             console.log(infoJSON[key1][i]);
          }
        } else {console.log(infoJSON[key1]);}
    }
 }

Et maintenant nous avons le résultat comme

Bhaumik
Mehta
Gray
Black
Blue

Si nous utilisons le nom de la clé ou l'identifiant, alors il est très facile d'obtenir les valeurs de l'objet JSON, mais ici nous obtenons nos valeurs sans utiliser le nom ou l'ID de la clé.


2
2017-08-19 05:12