我正在尝试解析来自Ajax调用.NET Web服务的JSON结果,如下所示:
function doAjaxCallBack() {
$.ajax({
type: "POST",
url: "AjaxCallBackService.asmx/GetAllTitles",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
// show alert book title and tags to test JSON result
},
});
}
这是我从doAjaxCallBack返回的JSON结果:
{"d":[
{
"__type":"ASP.NET_Training.Book",
"Price":12.3,
"Title":"Javascript Programming",
"Tag":["Ajax","Javascript"]
},
{
"__type":"ASP.NET_Training.Book",
"Price":14.23,
"Title":"Code Complete",
"Tag":["Programming","Concept"]
}
]}
我想获得书名及其标签。我如何循环这种JSON?
谢谢。
答案 0 :(得分:3)
您将获得一个具有一个属性d
的Object,该属性引用一个对象数组。
您可以使用jQuery.each()
[docs]方法迭代该数组,并从数组中的每个对象中选择标题和标记属性。
$.each(msg.d, function( i, val ) {
console.log(val.Title);
$.each(val.Tag, function( i, val ) {
console.log("Tag: " + val);
});
});
直播示例: http://jsfiddle.net/emSXt/3/ (打开您的控制台)
答案 1 :(得分:2)
$.each(msg.d, function( i, value ) {
console.log(value.Title);
if($.isArray(value.Tag)) {
$.each(value.Tag, function(j, value1) {
console.log(value1);
});
}else {
console.log(value.Tag);
}
});
这是一个小提琴http://jsfiddle.net/ATBNx/
答案 2 :(得分:1)
for(var ib in msg.d) {
alert(msg.d[ib].Title);
for(var it in msg.d[ib].Tag) {
alert(msg.d[ib].Tag[it]);
}
}