2012-07-17 49 views
0

我有一个非常基本的json文件,我正在加载jquery/javascript。现在我只是想提醒我的一些数据。我遇到的问题是我的JSON文件中有3个主要项目(称为“类别”),但由于某些原因,您只能阅读最后一个。javascript json不显示所有条目

我的JSON文件看起来像这样:

{ 
"category":{ 
    "name":"Caribbean Travel", 
    "article":{ 
     "id": "1", 
     "title": "", 
     "teaser": "", 
     "image": "", 
     "date": "", 
     "map": "", 
     "body": "" 
    } 
}, 
"category":{ 
    "name":"European Travel", 
    "article":{ 
     "id": "2", 
     "title": "", 
     "teaser": "", 
     "image": "", 
     "date": "", 
     "map": "", 
     "body": "" 
    } 
}, 
"category":{ 
    "name":"U.S. Travel", 
    "article":{ 
     "id": "3", 
     "title": "", 
     "teaser": "", 
     "image": "", 
     "date": "", 
     "map": "", 
     "body": "" 
    } 
} 

}

我打电话了JSON文件,并提醒,像这样一些信息:

$(document).ready(function(){ 
$.getJSON("news.json", 
    function(data){ 
     alert(JSON.stringify(data)); 
     //alert(data.category.article.id); 
    }); 

});

所以当我查看数据时,我看到的是最后一个类别信息(美国旅游)。它根本没有显示顶部2。而且我不能使用data.category [1]或类似的东西来引用它们。

有没有人知道我在做什么错在这里?

感谢

+0

使用数组。属性名称应该是唯一的。 – 2012-07-17 15:48:35

+0

尝试做一个'console.log(数据)',看看你得到什么。 – laymanje 2012-07-17 15:49:33

回答

2

您的JSON文件应该是这样的:

[{ 
    "name": "Caribbean Travel", 
    "articles": [{ 
     "id": "1", 
     "title": "", 
     "teaser": "", 
     "image": "", 
     "date": "", 
     "map": "", 
     "body": "" 
    }] 
}, { 
    "name": "European Travel", 
    "articles": [{ 
     "id": "2", 
     "title": "", 
     "teaser": "", 
     "image": "", 
     "date": "", 
     "map": "", 
     "body": "" 
    }] 
}, { 
    "name": "U.S. Travel", 
    "articles": [{ 
     "id": "3", 
     "title": "", 
     "teaser": "", 
     "image": "", 
     "date": "", 
     "map": "", 
     "body": "" 
    }, { 
     "id": "4", 
     "title": "", 
     "teaser": "", 
     "image": "", 
     "date": "", 
     "map": "", 
     "body": "" 
    }] 
}] 

data[0]将是第一类,第二个等

alert(data[0].articles[0].id) //alert first category's first article's id 
alert(data[2].name) //alert third category's name 
alert(data[1].articles[0].body) //alert second category's first article's body 
alert(data[2].articles[1].body) //alert third category's second article's body 
+0

好的,但是如果我为每个名称有多个文章呢?我如何访问第二/第三/ etc文章?数据[0] .article [0] .id不计算。 – Nick 2012-07-17 16:06:28

+0

@尼克啊,让我解决这个问题。现在支持多篇文章,你只需在那里使用一个数组。注意我使用'articles',因为它是一个包含0-n篇文章的数组,所以命名更好。 – Esailija 2012-07-17 16:09:24

0
{"category":[ 
{ 
    "name":"Caribbean Travel", 
    "article":{ 
     "id": "1", 
     "title": "", 
     "teaser": "", 
     "image": "", 
     "date": "", 
     "map": "", 
     "body": "" 
    } 
}, 
{ 
    "name":"European Travel", 
    "article":{ 
     "id": "2", 
     "title": "", 
     "teaser": "", 
     "image": "", 
     "date": "", 
     "map": "", 
     "body": "" 
    } 
}, 
{ 
    "name":"U.S. Travel", 
    "article":{ 
     "id": "3", 
     "title": "", 
     "teaser": "", 
     "image": "", 
     "date": "", 
     "map": "", 
     "body": "" 
    } 
} 
] 
}