javascript - 使用jquery解析具有未知字段名称的json多个数组

标签 javascript jquery json

我有如下所示的 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>";
       } 
    }
}

Here is a demo.

关于javascript - 使用jquery解析具有未知字段名称的json多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29907952/

相关文章:

javascript - 从 SyntaxHighlighter 中删除多余的空行

jQuery Maphilight。在突出显示新的之前切换alwaysOn

javascript - 使用 jQuery 从字符串中删除 ' &raquo; '

javascript - QuickSort 算法因 stackoverflow 错误而失败

javascript - Angular - 如何将多个 FormGroups 插入 FormArray?

javascript - jQuery - 从 html 构建对象

jquery - 使用 $.getJSON 将 Rails 渲染的 JSON 拉入 JavaScript(作为 JSON 对象)

java - 如何从 Java 中的 HTTP 请求中获取 JSON 对象

python - 如何在Python中使用Elasticsearch索引JSON格式的文件?

javascript - 搜索表寻找标签