我有如下所示的 json 数据
{
"projects":{
"COMMERCIAL":[
{
"ppID":"87",
"pTitle":"5th Street Lofts"
},
{
"ppID":"94",
"pTitle":"Skip-a-Long Child Development Services"
}
],
"CORPORATE":[
{
"ppID":"86",
"pTitle":"Caxton Building"
},
{
"ppID":"68",
"pTitle":"Swiss Valley Corporate Headquarters"
}
],
"EDUCATION (COLLEGIATE)":[
{
"ppID":"20",
"pTitle":"Ashford University - Athletic Field"
},
{
"ppID":"64",
"pTitle":"St. Ambrose University - Center For Health And Science Education"
}
]
},
"error":"0"
}
在此示例中,“COMMERCIAL”、“CORPORATE”和“EDUCATION (COLLEGIATE)”是未知字段名称。
我从我的 CGI 中获取它,如下所示:
$.ajax({
url: "cgi/myCGI.exe",
dataType: "json",
error: ajaxError,
success: function(json){
if(json.error !== "0"){
alert("error processing request: "+json.error);
return;
}
var temp="";
var i=0;
for(i=0;i<=json.projects.length-1;i++){
// tried something like this
}
$.each(json.projects, function(ppID, pTitle) {
// tried something like this
});
// add to my html
}
});
最终,我想将 HTML 添加到网页中, 喜欢
<div class="smSubTitle">COMMERCIAL</div>
<a href="somePage.html?id=87">Fidlar Technologies</a><br>
<a href="somePage.html?id=94">Skip-a-Long Child Development Services</a><br>
<div class="smSubTitle">CORPORATE</div>
等等
我不知道如何获取每个项目“子标题”的名称,然后获取它的各个字段值。
编辑: 首先,我注意到 json.projects.length 未定义。 我也尝试过 json.projects[0].length 但它也是未定义的。
在
$.each(json.projects, function(ppID, pTitle) {
console.log("test: "+ppID);
console.log("test: "+pTitle);
});
ppID 有效,但 pTitle 表示 [object,object]
最佳答案
projects
属性是一个对象,每个对象属性都包含一个数组。因此,您必须首先遍历对象的键,然后遍历数组,即 2 个嵌套循环:
var html = '', projects, type, i;
for ( type in json.projects ) {
if ( json.projects.hasOwnProperty(type) ) {
// append the type of the projects
html += "<div class='smSubTitle'>" + type + "</div>";
projects = json.projects[type];
// iterate through each array
for ( i = 0; i < projects.length; i++ ) {
html += "<a href='somePage.html?id="+ projects[i].ppID+ "'>"+ projects[i].pTitle +"</a><br>";
}
}
}
关于javascript - 使用jquery解析具有未知字段名称的json多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29907952/