web-dev-qa-db-fra.com

Comment obtenir la valeur de la clé dans un objet JSON?

Comment obtenir la valeur de la clé en objet JSON et la longueur de l'objet à l'aide de JavaScript.
Par exemple:

[
  {
    "amount": " 12185",
    "job": "GAPA",
    "month": "JANUARY",
    "year": "2010"
  },
  {
    "amount": "147421",
    "job": "GAPA",
    "month": "MAY",
    "year": "2010"
  },
  {
    "amount": "2347",
    "job": "GAPA",
    "month": "AUGUST",
    "year": "2010"
  }
]

Ici, la longueur de ce tableau est 3. Pour obtenir, la valeur est correcte ([0].amount), dans index[0] il a 3 paires valeur/nom.
Donc, je dois obtenir le nom (comme montant ou travail ... totalement quatre noms) et aussi compter combien de noms y a-t-il?

19
selladurai

Tout d'abord, vous n'avez pas affaire à un "objet JSON". Vous avez affaire à un objet JavaScript. JSON est une notation textuelle, mais si votre code d'exemple fonctionne ([0].amount), vous avez déjà désérialisé cette notation dans un graphe d'objet JavaScript. (Ce que vous avez cité n'est pas du tout un JSON valide; dans JSON , les clés doivent être entre guillemets. Ce que vous avez cité est un littéral d'objet JavaScript, qui est un sur-ensemble de JSON.)

Ici, la longueur de ce tableau est 2.

Non, c'est 3.

Donc, je dois obtenir le nom (comme montant ou emploi ... totalement quatre noms) et aussi compter combien de noms y a-t-il?

Si vous utilisez un environnement qui prend totalement en charge ECMAScript5, vous pouvez utiliser Object.keys ( spec | MDN ) pour obtenir les clés énumérables de l’un des objets sous forme de tableau. Si ce n'est pas le cas (ou si vous voulez simplement les parcourir en boucle plutôt que d'en obtenir un tableau), vous pouvez utiliser for..in:

var entry;
var name;
entry = array[0];
for (name in entry) {
    // here, `name` will be "amount", "job", "month", then "year" (in no defined order)
}

Exemple de travail complet:

(function() {
  
  var array = [
    {
      amount: 12185,
      job: "GAPA",
      month: "JANUARY",
      year: "2010"
    },
    {
      amount: 147421,
      job: "GAPA",
      month: "MAY",
      year: "2010"
    },
    {
      amount: 2347,
      job: "GAPA",
      month: "AUGUST",
      year: "2010"
    }
  ];
  
  var entry;
  var name;
  var count;
  
  entry = array[0];
  
  display("Keys for entry 0:");
  count = 0;
  for (name in entry) {
    display(name);
    ++count;
  }
  display("Total enumerable keys: " + count);

  // === Basic utility functions
  
  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
  }
  
})();

Puisque vous avez affaire à des objets bruts, la boucle for..in ci-dessus est correcte (sauf si quelqu'un a commis le péché de bidouiller avec Object.prototype, mais supposons que ce ne soit pas le cas). Mais si l'objet dont vous voulez les clés peut également hériter des propriétés énumérables de son prototype, vous pouvez restreindre la boucle aux seules clés own de l'objet (et non aux clés de son prototype) en ajoutant un appel hasOwnProperty:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}
14
T.J. Crowder

Json sont essentiellement représentés sous forme de tableau associé en Javascript. Il suffit de les parcourir pour lire la clé ou la valeur

    var JsonObj= { "one":1, "two":2, "three":3, "four":4, "five":5 };

    //read key
    for (var key in JsonObj) {
       console.log(key);
       console.log(JsonObj[key]);
   }
18
Anand

Tu pourrais avoir besoin de:

Object.keys(JSON[0]);

Pour obtenir quelque chose comme:

[ 'amount', 'job', 'month', 'year' ]

Remarque: votre JSON n'est pas valide.

11
Jaseem

Vous pouvez simplement traverser l'objet et retourner si trouvé la correspondance voici le code

returnKeyforValue : function(){
    var JsonObj= { "one":1, "two":2, "three":3, "four":4, "five":5 };
        for (key in JsonObj) {
        if(JsonObj[key] === "Keyvalue"){
           return key;
        }
    }
 }
0
Savyasachi

Lorsque vous analysez la représentation JSON , elle devient un JavaScript tableau d'objets.

Pour cette raison, vous pouvez utiliser la propriété .length du tableau JavaScript pour voir le nombre d'éléments contenus et utiliser une boucle for pour l'énumérer.

0
Matt