#javascript #jquery #json
#javascript #jquery #json
Вопрос:
возможно, это простой вопрос для некоторых из присутствующих. Но я просто не знаю, как это сделать, и мне очень нужна помощь. Вот мой json:
{"name":"cust_num","comparison":"starts_with","value":"01"},
{"name":"cust_name","comparison":"starts_with","value":"ad"},
{"name":"cust_age","comparison":"=","value":"20"}
моя программа выдает предупреждения в формате JSON следующим образом:
{
"ID":"TBsKI7",
"dataType":"data",
"filters":[
"{"name":"cust_num","comparison":"starts_with","value":"01"}",
"{"name":"cust_name","comparison":"starts_with","value":"ad"}",
"{"name":"cust_age","comparison":"=","value":"20"}
],
"recordLimit":50,
"recordOffset":0,
.
.
.
}
очевидно, что это ошибка. Мне кажется, что первый json был дважды преобразован в строку (если я правильно использую этот термин). Теперь, чего я хочу, так это как исправить мой первый json или как его разобрать, чтобы он выводился без ».
я уже пробовал использовать jQuery.parseJSON(), но он возвращает null.
спасибо за чтение.
РЕДАКТИРОВАТЬ: Это мой javascript-код, который создает приведенный выше json:
$('#table tr').each(function(){
var td = '';
if ($(this).find("td:first").length > 0) { // used to skip table header (if there is)
$(this).find('option:selected').each(function(){
td = td $(this).text() ',';
});
td = td $(this).find('input').val();
filt[ctr]=td;
ctr = 1;
}
});
for (var i = 0;i<filt.length;i ) {
b = filt[i].split(',');
if (b[0] == "no"){
b[0] = "cust_num";
}
if (b[0] == "name"){
b[0] = "cust_name";
}
if (b[0] == "age"){
b[0] = "cust_age";
}
jsonobj.name = b[0];
jsonobj.comparison = b[1];
jsonobj.value = b[2];
c[i] = JSON.stringify(jsonobj); //if json.stringify, it will display the json with ''
//if not, its only the last filter will be read for all the tr.
}
у меня есть динамическая таблица, которая будет принимать данные, которые я буду использовать для создания json.
Комментарии:
1. Это не весь ваш JSON. Кажется, что вы вкладываете объекты.. Можем ли мы получить весь фрагмент кода, пожалуйста?
2. Я думаю, ваша первая проблема заключается в том, что генерирует этот JSON. Вместо того, чтобы пытаться взломать, чтобы исправить это, я бы попытался убедиться, что это правильно в первую очередь. Откуда берется JSON?
Ответ №1:
Я надеюсь, вы где-то определяете свои переменные. Вне цикла for вы должны выполнять
var c = [];
Затем попробуйте
c.push({
name: b[0],
comparison: b[1],
value: b[2]
});
вместо
jsonobj.name = b[0];
jsonobj.comparison = b[1];
jsonobj.value = b[2];
c[i] = JSON.stringify(jsonobj);
и тогда вы должны быть в состоянии сделать
JSON.stringify(c);
Комментарии:
1. Привет, спасибо… ты спас меня сегодня. это было очень хорошим подспорьем. теперь это работает.
2. @jayAnn: всегда пожалуйста. в качестве дополнительного примечания, стоило бы запустить ваш javascript через jslint.com 🙂