#javascript #jquery #json #ajax
#javascript #jquery #json #ajax
Вопрос:
Мой объект json выглядит так, как показано ниже, и я хочу зацикливать только «данные». когда я пытаюсь получить доступ с objparse.data
помощью, он выдает null. Пожалуйста, подскажите мне, как зациклить «данные» в объекте objparse.
objparse = "{"success":true,"message":"","data":[{"vehModelCode":"0824","vehModelDesc":"xA"},{"vehModelCode":"0825","vehModelDesc":"xB"},]}"
Комментарии:
1. Это строка JSON, а не объект…
2. Поскольку objParse является строкой, поэтому он выдает значение null. Попробуйте использовать : var newObj = eval(objparse); А затем использовать newObj.data .
3. Также рассмотрите возможность использования $.getJSON() — затем попросите обратный вызов (второй аргумент) принять аргумент like
responseData
и использоватьresponseData.data
…
Ответ №1:
Похоже, проблема с вашим примером заключается в том, что JSON недействителен из-за конечной запятой, поэтому передача его JSON.parse()
завершается ошибкой.
..."vehModelDesc":"xB"},]}"
должно быть "vehModelDesc":"xB"}]}"
(удалена последняя запятая).
Как только это будет исправлено, вы можете сделать:
var mydata = JSON.parse(object).data
и тогда mydata
будет тип массива, для которого вы можете вызвать любой из методов массива ( map
, forEach
, и т.д.)
Ответ №2:
Проверьте пример:
var objparsed = {"success":true,"message":"","data":[{"vehModelCode":"0824","vehModelDesc":"xA"},{"vehModelCode":"0825","vehModelDesc":"xB"}]};
for (var z in objparsed['data']) {
console.log(objparsed['data'][z]);
}
var objparse = '{"success":true,"message":"","data":[{"vehModelCode":"0824","vehModelDesc":"xA"},{"vehModelCode":"0825","vehModelDesc":"xB"}]}';
var result = JSON.parse(objparse);
for (var z in result['data']) {
console.log(result['data'][z]);
}
Ответ №3:
Сначала вы должны проанализировать строку JSON.
var data = JSON.parse(objparse).data;
data.forEach(function(model){
/* DO STUFF */
});
Комментарии:
1. var data = JSON.parse(objparse).data; выбрасывается как [объект][объект]
Ответ №4:
Я думаю, вы можете сделать следующий фрагмент кода
var objparse = "{"success":true,"message":"","data":[{"vehModelCode":"0824","vehModelDesc":"xA"},{"vehModelCode":"0825","vehModelDesc":"xB"},]}"
var obj = eval("(" objparse ')');
obj.data.forEach(function(model){alert(model);});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Надеюсь, это поможет