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

Cómo obtener el valor clave en el objeto JSON y la longitud del objeto utilizando JavaScript.
Por ejemplo:

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

Aquí, la longitud de esta matriz es de 3. Para obtener el valor está bien ([0].amount), en index[0] tiene 3 nombre valor pair.
Por lo tanto, necesito para obtener el nombre (como la cantidad o el trabajo ... en total cuatro nombre) y también para contar cuántos nombres están ahí?

Json se representan básicamente como matriz asociada en Javascript. Sólo hay que hacer un bucle sobre ellos para leer la clave o el valor

    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]);
   }
Comentarios (4)
Solución

En primer lugar, you're no tratar con un "objeto JSON." You're tratar con un objeto JavaScript. JSON es una notación textual, pero si tu código de ejemplo funciona ([0].amount), ya has deserializado esa notación en un gráfico de objetos JavaScript. (Lo que ha citado no es JSON válido en absoluto; en JSON, las claves deben ir entre comillas dobles. Lo que has citado es un literal de objeto JavaScript, que es un superconjunto de JSON).

Aquí, la longitud de este array es 2.

No, es 3.

Por lo tanto, necesito obtener el nombre (como la cantidad o el trabajo ... totalmente cuatro nombre) y también para contar cuántos nombres hay?

Si estás usando un entorno que tiene soporte completo para ECMAScript5, puedes usar Object.keys (spec | MDN) para obtener las claves enumerables de uno de los objetos como un array. Si no es así (o si sólo quieres hacer un bucle a través de ellas en lugar de obtener un array de ellas), puedes 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 completo:

begin snippet: js hide: false console: true babel: false -->

(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 estás tratando con objetos sin procesar, el bucle for..in de arriba está bien (a menos que alguien haya cometido el pecado de meterse con Object.prototype, pero supongamos que no). Pero si el objeto del que quieres las claves también puede heredar propiedades enumerables de su prototipo, puedes restringir el bucle sólo a las claves propias del objeto (y no a las claves de su prototipo) añadiendo una llamada hasOwnProperty:

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

Cuando analice la representación JSON, se convertirá en un array JavaScript de objetos.

Debido a esto, puede utilizar la propiedad .length del array JavaScript para ver cuántos elementos contiene, y utilizar un bucle for para enumerarlo.

Comentarios (0)