我有一个JSON本地文件,如下所示:
{
"sites" : [
{
"name" : "Somename",
"url" : "https://url.com",
"api" : "http://url.com/api",
},
{
"name" : "Somename2",
"url" : "https://url2.com",
"api" : "http://url2.com/api",
}
}
每个api
都有一个我需要存储在数据库中的整数数据。如何在Javascript中迭代这样的JSON?很快,因为我能够检索该api url,我将能够编写另一个函数并获得我想要的整数。我尝试过的是:
function getNetworkData(){
$.getJSON('../json/sites/site-list.json', function(data) {
var sites = JSON.parse(data);
sites.forEach(function(data){
console.log(data.sites[0].name)
});
});
}
......但这不起作用。我一直收到错误:
位置1的JSON中出现意外的令牌o
答案 0 :(得分:2)
函数$.getJSON
已经解析了来自服务器/源的响应。
因此,您不需要使用JSON.parse
解析它,而且,您尝试使用数组循环,如下所示:
sites.forEach
您真正想要的是循环属性sites
:
data.sites.forEach(function(s){
console.log(s.name);
});
答案 1 :(得分:1)
像这样:
function getNetworkData(){
$.getJSON('../json/sites/site-list.json', function(data) {
data.sites.forEach(function(site){
console.log(site.name)
});
});
}
您循环的对象不需要索引。
site
已经等于第一个循环上的sites [0],第二个循环上的sites [1]等等,所以你只需要site.name
答案 2 :(得分:1)
你已经有了JSON,没有必要解析。请参阅jQuery.getJSON
从
更新var sites = JSON.parse(data);
sites.forEach(function(data){
console.log(data.sites[0].name)
});
到
data.sites.forEach(function(site){
console.log(site.name); // prints name
console.log(site.api); // prints api
});
答案 3 :(得分:0)
略过JSON.parse(data)
;您将获得一个可以操作$.getJSON()
的对象。见getJson