Анализировать переменную как JSON w/ jQuery
Я пытаюсь заполнить форму списком вопросов и переключателями. Когда страница загружена, у меня есть переменная, содержащая ответы, которые у них есть, в виде строки в формате JSON:
var json = '{ "answers" : [{"84" : "Y" },{"85" : "Y" },{"86" : "Y" },{"87" : "Y" },{"88" : "Y" },{"89" : "N" },{"90" : "N" },{"91" : "N" },{"92" : "Y" },{"93" : "N" },{"94" : "Y" },{"95" : "N" },{"96" : "N" },{"97" : "Y" }]}';
Мне нужно перебрать ответы и найти переключатель с идентификатором, совпадающим с номером IE id="84", и установить его значение на основе соответствующего значения (Y).
Похоже, getJSON - это то, на что мне следует обратить внимание, но мне не нужно совершать вызов, чтобы получить данные, так как они у меня уже есть.
3 ответа
Понял, удалил кавычки, как упомянуто выше, добавил класс, который соответствует идентификатору, чтобы я мог выбрать все элементы для данного идентификатора:
for(var i =0; i < json.answers.length; i++) {
var item = json.answers[i];
for (var j in item) {
$('.' + j).each(function(){
if ($(this).attr("value") == item[j]) $(this).attr("checked", true);
});
}
}
Я уверен, что, возможно, есть более элегантное решение, но пока оно работает очень хорошо.
Вы можете просто удалить кавычки снаружи, и это будет уже в правильном формате.
var json = {
"answers" : [{"84" : "Y" },
{"85" : "Y" },
{"86" : "Y" },
{"87" : "Y" },
{"88" : "Y" },
{"89" : "N" },
{"90" : "N" },
{"91" : "N" },
{"92" : "Y" },
{"93" : "N" },
{"94" : "Y" },
{"95" : "N" },
{"96" : "N" },
{"97" : "Y" }
]
};
В отличие от некоторых других форматов, JSON основан на реальном языке, что означает, что вы можете использовать формат JSON в обычном кодировании. Это довольно легко написать JSON.
Обычно вы просто используете каждое утверждение, как показано ниже:
jQuery.each(json.answers, function(i, val) {
$("#" + i).val() = val;
});