Как получить значение ключа в объекте JSON?

Как получить ключ valu в объекте JSON и длину объекта с помощью JavaScript.
Например:

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

Здесь длина массива равна 3. Для получения значения подходит ([0].amount), в индексе [0] есть 3 пары имя-значение.
Итак, мне нужно получить имя (например, amount или job... всего четыре имени), а также подсчитать, сколько всего имен?

Комментарии к вопросу (4)

В Javascript Json в основном представлен в виде ассоциативного массива. Просто нужно выполнить цикл по ним, чтобы прочитать либо ключ, либо значение

    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]);
   }
Комментарии (4)
Решение

Во-первых, вы не имеете дело с "объектом JSON", вы имеете дело с объектом JavaScript. JSON - это текстовая нотация, но если код вашего примера работает ([0].amount), то вы уже десериализовали эту нотацию в объектный граф JavaScript. (То, что вы процитировали, вообще не является корректным JSON; в JSON ключи должны заключаться в двойные кавычки. То, что вы процитировали, - это объектный литерал JavaScript, который является надмножеством JSON).

Здесь длина массива равна 2.

Нет, она равна 3.

Итак, мне нужно получить имя (например, сумма или работа... всего четыре имени), а также подсчитать, сколько всего имен?

Если вы используете среду с полной поддержкой ECMAScript5, вы можете использовать Object.keys (spec | MDN), чтобы получить перечислимые ключи для одного из объектов в виде массива. В противном случае (или если вы хотите не получить массив ключей, а просто перебрать их в цикле) можно использовать 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)
}

Полный рабочий пример:

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

})();

Поскольку вы имеете дело с необработанными объектами, то приведенный выше цикл for..in вполне подходит (если только кто-то не согрешил, наложив на себя руки в Object.prototype, но предположим, что это не так). Если же объект, ключи которого вам нужны, может наследовать перечисляемые свойства от своего прототипа, то можно ограничить цикл только ключами объекта (а не ключами его прототипа), добавив в него вызов hasOwnProperty:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}
Комментарии (3)

Вам может понадобиться:

Object.keys(JSON[0]);

Чтобы получить что-то вроде:

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

  • Примечание: ваш JSON недействителен.*
Комментарии (1)

Попробуйте это

var str ="{ "name" : "user"}";
var jsonData = JSON.parse(str);     
console.log(jsonData.name)

//Array Object

str ="[{ "name" : "user"},{ "name" : "user2"}]";
jsonData = JSON.parse(str);     
console.log(jsonData[0].name)
Комментарии (0)

Когда вы разберете JSON-представление, оно превратится в JavaScript массив объектов.

Благодаря этому можно использовать свойство .length массива JavaScript для определения количества элементов и использовать цикл for для его перечисления.

Комментарии (0)

Вы можете просто пройти через объект и вернуться, если найдено совпадение здесь с кодом

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)