【问题标题】:Jquery ajax parse json file with different named arraysJquery ajax解析具有不同命名数组的json文件
【发布时间】:2016-01-20 22:46:06
【问题描述】:

我刚刚完成了使用 json 的 jquery ajax 教程。我已经能够创建一个 ajax 页面。但是让事情变得更复杂。我有一个包含两种类型数组的 json 文件。下面的示例(第一个对象属于人员数组,接下来的两个属于新闻源):

{  
   "people":[  
      {  
         "name":"John Constable",
         "occupation":"CEO",
         "location":"Toronto, Canada",
         "division":"Health & Epidemics",
         "profileImage":"",
         "followers":123
      },
      {  
         "name":"Edward Monet",
         "occupation":"Lead Developer",
         "location":"Toronto, Canada",
         "division":"Health & Epidemics",
         "profileImage":"",
         "followers":9923
      }
   ]
},
{  
   "newsfeed":[  
      {  
         "Title":"Evaluations of disaster education programs for children",
         "date":"Dec 10, 2015",
         "tags":[  
            "disaster",
            "tornado",
            "risk management"
         ],
         "division":"Health & Epidemics",
         "Image":"",
         "share":123
      },
      {  
         "Title":"UNISDR Annual Report 2014",
         "date":"Dec 10, 2015",
         "tags":[  
            "disaster",
            "tornado",
            "risk management"
         ],
         "division":"Civil & Cyber Security",
         "Image":"",
         "share":123
      }
   ]
}

我的 jquery 代码现在是

$.getJSON( "ajax/result1-F.json", function( index ) {
    var jasondata = [];

    $.each(index, function( i, val ) {
           $container1.append( "<div><ul>" + val.profileImage + "</ul><ul><li>"+       val.name + "</li><li>" + val.occupation +"</li><li>"  + val.location + "</li><li>" + val.division + "</li></ul>" + "<ul><li> <button> FOLLOW </button> </li>" + "<li>" + val.followers + "</li><li>followers</li><ul></div>");
    }); 

});

container1 显示人员数组的所有信息。 现在我被困在如何同时在单独的container2 中显示新闻源。

谁能指出我正确的直接?谢谢你

【问题讨论】:

  • 你总是会得到peoplenewsfeed 的两个数组吗? index 是整个 JSON 对象吗?
  • 实际上我有一个影响两个数组的下拉菜单,在这种情况下,我只想找出一种简单的方法来在两个不同的表中显示两个数组。并且 Yes Index 是整个 JSON 对象。

标签: javascript jquery ajax


【解决方案1】:

我不明白你为什么不能这样做:

var jsonObj = {
    "people": [{
        "name": "John Constable",
        "occupation": "CEO",
        "location": "Toronto, Canada",
        "division": "Health & Epidemics",
        "profileImage": "",
        "followers": 123
    }, {
        "name": "Edward Monet",
        "occupation": "Lead Developer",
        "location": "Toronto, Canada",
        "division": "Health & Epidemics",
        "profileImage": "",
        "followers": 9923
    }]
},
{
    "newsfeed": [{
        "Title": "Evaluations of disaster education programs for children",
        "date": "Dec 10, 2015",
        "tags": ["disaster", "tornado", "risk management"],
        "division": "Health & Epidemics",
        "Image": "",
        "share": 123
    }, {
        "Title": "UNISDR Annual Report 2014",
        "date": "Dec 10, 2015",
        "tags": ["disaster", "tornado", "risk management"],
        "division": "Civil & Cyber Security",
        "Image": "",
        "share": 123
    }]
};

var people = jsonObj.people;
var newsfeed = jsonObj.newsfeed;

people.map(function(person) {
    $container1.append("<div><ul>" + person.profileImage + "</ul><ul><li>" + person.name + "</li><li>" + person.occupation + "</li><li>" + person.location + "</li><li>" + person.division + "</li></ul>" + "<ul><li> <button> FOLLOW </button> </li>" + "<li>" + person.followers + "</li><li>followers</li><ul></div>");
});

newsfeeds.map(function(news) {
    //do stuff
});

【讨论】:

    【解决方案2】:

    您当前正在尝试遍历整个 JSON 对象。而是从对象中选择该属性并对其进行循环。

    $.each(index.people, function( i, val ) {//what you already have});
    

    然后为新闻源做类似的事情

    $.each(index.newsfeed, function( i, val ) {//printing what you have in newsfeed into $container2});
    

    【讨论】:

      【解决方案3】:

      我不明白。为什么不加入这两个数组呢?

      {
          "people": [{...}, {...}],
          "newsfeed": [{...}, {...}]
      }
      

      现在,使用jasondata.people[0].name。对于新闻源:jasondata.newsfeed[0].Title

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-11
        相关资源
        最近更新 更多