Как подсчитать длину элемента массива JSON

Я пытаюсь подсчитать длину элемента массива JSON. Я знаю, чтобы подсчитать длину массива с помощью json.array.length. Это нужно, чтобы найти, сколько элементов в каждом индексе.

Если мой массив:

  {"shareInfo":[{"id":"1","a":"sss","b":"sss","question":"whi?"},
  {"id":"2","a":"sss","b":"sss","question":"whi?"},
  {"id":"3","a":"sss","b":"sss","question":"whi?"},
  {"id":"4","a":"sss","b":"sss","question":"whi?"}]}

Затем мне нужно найти длину {"id":"1","a":"sss","b":"sss","question":"whi?"}. В этом есть четыре предмета. Я пробовал это с помощью data.shareInfo[i].length. Но он вызывает ошибку.

Пожалуйста, скажите мне, как найти длину.... Спасибо....

Ответ 1

Прежде чем отвечать, прочитайте эту Документацию один раз. Тогда вы четко понимаете ответ.

Попробуйте это. Это может сработать для вас.

Object.keys(data.shareInfo[i]).length

Ответ 2

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

obj = JSON.parse(jsonString);
shareInfoLen = Object.keys(obj.shareInfo[0]).length;

Ответ 3

Во-первых, нет такой вещи, как объект JSON. JSON - это строковый формат, который может использоваться как представление объектного литерала Javascript.

Поскольку JSON - это строка, Javascript будет рассматривать ее как строку, а не как объект (или массив или все, что вы пытаетесь использовать как.)

Вот хорошая ссылка JSON, чтобы прояснить эту разницу:

http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/

Итак, если вам нужно выполнить задачу, указанную в вашем вопросе, единственное, что вы можете сделать, это написать собственный парсер или преобразовать строку JSON в объект. Для этого есть несколько библиотек. Посмотрите http://www.json.org/js.html для справки.

Ответ 4

Думаю, вам стоит попробовать

data = {"shareInfo":[{"id":"1","a":"sss","b":"sss","question":"whi?"},
{"id":"2","a":"sss","b":"sss","question":"whi?"},
{"id":"3","a":"sss","b":"sss","question":"whi?"},
{"id":"4","a":"sss","b":"sss","question":"whi?"}]};

ShareInfoLength = data.shareInfo.length;
alert(ShareInfoLength);
for(var i=0; i<ShareInfoLength; i++)
{
alert(Object.keys(data.shareInfo[i]).length);
}