2015-04-15 2 views
1

Мне нужно создать объект JSON динамически в JavaScript с использованием цикла for. Я попытался использовать метод array.Push, но он не работает. Я получаю только первое значение, которое нужно сохранить. Остальные значения итерации не сохраняются.Создание объекта JSON в JavaScript динамически

Это то, что я пытаюсь:

var array = []; 
    for (var i = 0; i < 4; i++) { 
     var username = drlist.reportees[i].name; 
     var think40 = getthink40(n,m); 
     if (think40.isSuccessful){ 
      var result = think40.array; 
      var length = result.length; 
      var tes= 0; 
      for (var j = 0; j < length-1; j++){ 
       tes = tes + parseFloat(result[j].duration); 
      } 
      var hours = tes/60; 
      var think = (hours/40)*100; 
      if (think > 100) 
       { 
       think =100; 
       } 
      array.push({ 
        name: username, 
        hours: think 
       }); 
       } 
     return array; 
    } 
+0

Не могли бы вы опубликовать то, что вы пробовали? – 4Dev

+0

var myData = [];rows.each (функция (индекс) { var obj = { id: $ this.find ('. ElementOne'). Val(), имя: $ this.find ('. ElementTwo'). Text() }; myData.push (obj); }); У меня было это в качестве примера и вытолкнуло значения в массив json и retrun, но я получил только первое значение цикла –

+0

, вы можете/должны редактировать вопрос с помощью своего кода, а не комментировать его –

ответ

2

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

var jsonArray = []; 
function test(){ 
for (var i=0; i<3;i++) 
{ 
    var jsonObject = {'a':1, 'b':2}; jsonArray.push(jsonObject); 
} 
return jsonArray; 
} 

Примечание: Вы возвращаете JSONObject вместо jsonArray. Вероятно, вы должны вернуть jsonArray.

+0

Ошибка 500: Не удалось написать ответ: вызов адаптера вернул неверный результат. Он должен вернуть объект JSON. когда я пытаюсь использовать приведенный выше код, я получаю этот код ошибки –

+0

@GopiNath Я думаю, что у вас есть проблема с этим условием, если (think40.isSuccessful). Я думаю, что это возвращает false для 3 элементов, и только для одного элемента условие истинно. Это может быть причиной того, что вы получите один предмет. Не могли бы вы поставить console.log и проверить, что think40.isSuccessful возвращается для каждого элемента? –

+0

есть все равно, чтобы отлаживать линию за строкой для адаптеров рабочего света? Я не могу отладить его с помощью firebug –

0

Создание и управление объектом JSON в JavaScript не сильно отличается от любого другого типа объекта, но имеет несколько ограничений. В основном это касается типов данных JSON, а два наиболее примечательных - отсутствие дат и функций.

Объекты JavaScript могут содержать почти все (все чаще с ES6 и символами), но JSON является ограниченным подмножеством этого. JSON spec короткий и удобный для чтения (в комплекте с картинками!), Поэтому я бы посоветовал начать там. Как вы увидите в спецификации, типы значений включают строки, числа, объекты, массив, логические ключевые слова и нуль. Нет поддержки для дат - легко работать, форматируя их как строки ISO 8601 - или функции.

Чтобы превратить действительный объект JavaScript в окончательную форму JSON, требуется ограниченное количество форматирования строк и экранирование. У большинства современных браузеров есть global JSON API для этого, предоставляя методы анализа и рендеринга (stringify). Это ваш codec и первый и последний шаг при манипулировании JSON.

В вашем примере вы должны построить объект как обычно, назначив свойства (foo.bar = 3) по мере необходимости. В самом конце, чтобы вернуть JSON (который на самом деле является просто строкой в ​​JS), вы должны взять созданный объект и передать его JSON.stringify. Это создаст допустимую, безопасную, экранированную строку JSON, подходящую для передачи веб-сервисам и другим скриптам.

Смежные вопросы