Saltar al contenido

¿Cómo puedo obtener el valor de la clave en un objeto JSON?

Solución:

El contenido JSON se representa básicamente como una matriz asociativa en JavaScript. Solo necesita recorrerlos para leer la clave o el valor:

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

    // Read key
    for (var key in JSON_Obj) {
       console.log(key);
       console.log(JSON_Obj[key]);
   }

En primer lugar, no se trata de un “objeto JSON”. Se trata de un objeto JavaScript. JSON es un textual notación, pero si su código de ejemplo funciona ([0].amount), ya deserializó esa notación en un gráfico de objetos de JavaScript. (Lo que ha citado no es JSON válido en absoluto; en JSON, las claves deben estar entre comillas dobles. Lo que ha citado es un literal de objeto JavaScript, que es un superconjunto de JSON).

Aquí, la longitud de esta matriz es 2.

No, son 3.

Entonces, necesito obtener el nombre (como cantidad o trabajo … totalmente cuatro nombres) y también contar cuántos nombres hay?

Si está utilizando un entorno que tiene soporte completo de ECMAScript5, puede usar Object.keys (spec | MDN) para obtener las claves enumerables para uno de los objetos como una matriz. Si no (o si solo desea recorrerlos en lugar de obtener una matriz de ellos), puede usar 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)
}

Ejemplo de trabajo completo:

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

Dado que se trata de objetos en bruto, lo anterior for..in bucle está bien (a menos que alguien haya cometido el pecado de jugar con Object.prototype, pero supongamos que no). Pero si el objeto del que desea obtener las claves también puede heredar propiedades enumerables de su prototipo, puede restringir el bucle solo a las propiedades del objeto. propio claves (y no las claves de su prototipo) agregando un hasOwnProperty llamar allí:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}

Tu puedes necesitar:

Object.keys(JSON[0]);

Para obtener algo como:

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

Nota: su JSON no es válido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *