Структура объекта JSON

Я успешно создаю объект jquery, а затем сохраняю объект как строку json в локальной переменной хранилища, используя следующий код, который перебирает список и добавляет элементы в переменную myObject, а затем сохраняет объект в локальной переменной хранилища.

var x =$("[name=checklist]").length;
var myObject = {};
myObject.Vehicle_Check = [x];

$("[name=checklist]").each(function(index){
 if (index >0) {
 myObject.Vehicle_Check.push({});
 var PT = $("[name=problemtxt_" + index + "]").val(); //the fault label
 var CL = $("[name=checklbl_" + index + "]").text(); //the question
 var d = $("[name=optiongroup_" + index + "]:checked").val();
 if (d == 'Item 1') { 
 d='OK' 
 }
 else if (d == 'Item 2') { 
 d='Fault'
 localStorage.setItem('fault', 1);
 } 
 myObject.Vehicle_Check[index].question = CL;
 myObject.Vehicle_Check[index].result = d;
 myObject.Vehicle_Check[index].Fault = PT;
 } 
});

localStorage.setItem('results' ,JSON.stringify(myObject));

Я попытался сделать то же самое, построив объект по одному элементу, сохраняя его в локальной переменной хранилища, тогда, когда я хочу добавить другой элемент, возвращающий объект обратно из переменной, используя parseJSON, и добавив дополнительный элемент, а затем вернувшись обратно к переменная. У меня это работает неправильно. Как я должен правильно это построить?

Initiate the object:

var myObject = {};
myObject.Vehicle_Check = [18];
myObject.Vehicle_Check.push({});
localStorage.setItem('checkobject',JSON.stringify(myObject)); 

Add to the object:

var myObject = jQuery.parseJSON(localStorage.getItem('checkobject'));
 myObject.Vehicle_Check.push({});
 myObject.Vehicle_Check[I].question = 'First test!';
 myObject.Vehicle_Check[I].result = 'OK';
 myObject.Vehicle_Check[I].Fault = 'none';
 localStorage.setItem('checkobject',JSON.stringify(myObject))
1 ответ

Вы не определили I. Вместо этого вы можете сделать что-то подобное, поэтому вам не нужно беспокоиться об индексе:

var myObject = {};
myObject.Vehicle_Check = [];
localStorage.setItem('checkobject', JSON.stringify(myObject));

...

var myObject = jQuery.parseJSON(localStorage.getItem('checkobject'));
var next = {
 question: 'First test!',
 result: 'OK',
 Fault: 'none'
};
myObject.Vehicle_Check.push(next);
localStorage.setItem('checkobject', JSON.stringify(myObject));

Изменить - это может упростить еще больше, в зависимости от вашего использования:

myObject.Vehicle_Check.push({
 question: 'First test!',
 result: 'OK',
 Fault: 'none'
});

licensed under cc by-sa 3.0 with attribution.