我正在尝试解析来自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?
谢谢。
你得到一个带有一个属性d
的对象,它引用了一个对象数组。
可以使用 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/(打开控制台)
$.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/
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]);
}
}