разбор json jquery

#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 🙂