-1

我在尝试获取 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

4

2 回答 2

1

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

所以添加类似的东西

if (this.headingArray){
    //iterate through this.headingArray
}

演示:http: //jsfiddle.net/Q2Xy4/1/

于 2013-04-22T14:53:27.887 回答
0

这就是您的响应被解析的方式。

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

在此处输入图像描述

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

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

你应该做的是:

  • 要么将您的 json 重组为仅包含同质元素,
  • 或重写您的解析逻辑以在尝试访问其值之前检查不存在的字段。
于 2013-04-22T14:59:45.280 回答