Как получить ключевое значение в объекте JSON? - программирование
Подтвердить что ты не робот

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

Как получить значение ключа в объекте 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 пары значений имени.
Итак, мне нужно получить имя (например, количество или задание... всего четыре имени), а также подсчитать, сколько имен есть?

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Object.keys(JSON[0]);

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

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

Примечание. Ваш JSON недействителен.