如何从每个函数中的每个函数中解析的嵌套JSON传递数据?

时间:2012-04-07 05:06:15

标签: jquery json each

所以我正在尝试解析一些嵌套的json,而我试图访问它的方式令我感到困惑,因为我可以将它添加回自己的个别“项目”。每个项目都包含一个图像,一个标题和可能的标签。图像源和标题嵌套在同一级别上,因此可以在相同的每个函数中访问它们,但是标签对象(也与图像源和标题位于同一级别)包含一个数组,需要使用第二个函数访问以获取每个标记。我能够使用以下代码解析每个标记,但我不确定如何将标记对象数据传递回初始的每个函数。任何帮助将不胜感激!

JSON Structure:

{
"data": [
  {
     "source": "http://example.com/picture1.jpg",
     "caption": "First caption",
     "tags": {
        "data": [
           {

              "name": "Cats One"
           },
           {
              "name": "Dogs One"
           }
        ]
     }
   }
   {
     "source": "http://example.com/picture2.jpg",
     "caption": "Second caption",
     "tags": {
        "data": [
           {

              "name": "Cats Two"
           },
           {
              "name": "Dogs Two"
           }
        ]
     }
   }
 ]
}

jQuery用于访问JSON数据

$(document).ready(function(){

  var url = "http://example.com";

  $.getJSON(url, function(json) {
      $('#wrapper').prepend('<div id="container"></div>');
      $.each(json.data, function(i, data) {
          //Adds each entry to container
          $("#container").append('<ul class="image">' + '<li class="source"><img  src="' + data.source + '" /></li>' + '<li class="caption">' + data.caption + '</li>' + '</ul>');
          //Checks if tags exist for each element
          if (typeof(this.tags) === 'object') {
              $.each(this.tags.data, function() { 
                  //console.log(this.name);
                              //not sure what to add here to append these tags in a li tag above
              });
          }

  });
});  

1 个答案:

答案 0 :(得分:1)

连接所有名称,然后将它们附加到容器中。

...
var names = "";
$.each(this.tags.data, function(idx) { 
  if(idx > 0) names += ",";
  names += this.name;
});
$("#container").append($("<li></li>").append(names));
...