JSON.parse для массива объектов - PullRequest
2 голосов
/ 22 января 2012

У меня трудное время с чем-то, что должно быть (и, вероятно, является) довольно простым. У меня есть конструктор следующим образом:

function search_table(v1, v2, v3) {
    this.field = v1;
    this.condition = v2;
    this.value = v3;
}

Мое приложение имеет массив search_table, который получает JSON.stringify (ied) и затем сохраняется в localStorage.

Мой вопрос ... когда я получаю объект из localStorage, он находится в строковом формате JSON. Как мне вернуть его в формат search_table []?

Я бы предпочел сделать это без jQuery, если это возможно. Спасибо

Я пытался использовать что-то вроде следующего:

var search_array = JSON.parse(string_val);

Но это не позволяет мне получить доступ к search_array[i].condition в качестве примера.

1 Ответ

2 голосов
/ 22 января 2012

Это должно работать.Следующий код:

function search_table(v1, v2, v3) {
    this.field = v1;
    this.condition = v2;
    this.value = v3;
}
var arr = [new search_table(1, 2, 3), new search_table(4, 5, 6), new search_table(7, 8, 9)];

var str = JSON.stringify(arr);
console.log("stingified: ", str);

var search_array = JSON.parse(str);
var result = search_array[1].condition;
console.log("result: ", result);

Дает следующий вывод:

stingified: [{"field":1,"condition":2,"value":3},{"field":4,"condition":5,"value":6},{"field":7,"condition":8,"value":9}]
result: 5

Ваша проблема в другом месте кода, который вы не включили здесь.Также проверьте предложение Трэвиса - есть ли в вашем браузере встроенная поддержка функций JSON?Попробуйте это и убедитесь, что они не возвращают "undefined":

alert(JSON.stringify);
alert(JSON.parse);

Кроме того, убедитесь, что вы инициализировали i и что он находится в пределах вашего массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...