JSON中的嵌套数据

时间:2013-04-22 14:43:09

标签: jquery json

我在尝试在JSON文件中获取嵌套数据时遇到问题。

有人能帮帮我吗?我正在努力创建一个megamenu。

$.getJSON("js/nav.json", function (data)  {
    $.each(data.navigation, function (i, navigation)  {
        var jsondata = "<li class='top-level'><a href='/" + this.link + "'>" + this.title + "</a></li>";
        $.each(this.headingArray, function ()  {
            alert(hello);
        });
        $(jsondata).appendTo("ul.nav");
    });
  });
});

以下是从

读取的示例JSON文件
{
    "navigation": [
            {
                    "title": "Home",
                    "link": ""
 },
            {
                    "title": "Find your ski holiday",
                    "link": "#URLhere",
                    "headingArray": [
                            {
                                    "heading": [
                                            {
                                                    "title": "Destinations",
                                                    "link": "#URLhere",
                                                    "subheading": [
                                                            {
                                                                    "title": "Andorra",
                                                                    "link": "#URLhere"
},
                                                            {
                                                                    "title": "Austria",
                                                                    "link": "#URLhere"
},

请帮助任何帮助吗?

演示 - http://dev.thirstythursdays.co.uk/menu-json3

2 个答案:

答案 0 :(得分:1)

由于您的对象具有不同的属性,例如headingArraysubheading等,因此在尝试迭代this.headingArray之前,您必须检查它是否已定义。

添加类似

的内容
if (this.headingArray){
    //iterate through this.headingArray
}

DEMO:http://jsfiddle.net/Q2Xy4/1/

答案 1 :(得分:0)

这是您的响应解析方式。

请注意,由于JSON的结构方式,并非数组中的每个结果元素都包含headingArray / subheading字段。

enter image description here

例如,如果查看JSON响应数组中的第一个元素,则可以清楚地看到该对象不包含headingArray字段:

{
    "navigation": [
    {
        "title": "Home",
        "link": "" // No headingArray in here...
    }, {
        "title": "Find your ski holiday",
        "link": "#URLhere",
        "headingArray": [
        {

你应该做的是:

  • 要么将json重组为仅包含同类元素,
  • 或重写您的解析逻辑以检查之前是否存在不存在的字段 试图访问他们的价值观。