我是Node的新手,我想从API解析JSON。
问题是我可以访问几乎所有的JSON,但它有一些我没有得到的元素。
var request = require("request");
var url = 'https://cf.biwenger.com/api/v1/competitions/la-liga/data';
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
var jsonObject = JSON.parse(body);
console.log(jsonObject.data.teams);
}
});
我有这个代码来获取JSON上的团队,这就是我获得的:
{ '1':
{ id: 1,
name: 'Athletic',
slug: 'athletic',
nextMatch:
{ id: 4665,
date: 1522505700,
round: [Object],
home: true,
against: [Object] } },
'2':
{ id: 2,
name: 'Atlético',
slug: 'atletico',
nextMatch:
{ id: 4668,
date: 1522608300,
round: [Object],
home: true,
against: [Object] } },
'3':
{ id: 3,
name: 'Barcelona',
slug: 'barcelona',
nextMatch:
{ id: 4666,
date: 1522521900,
round: [Object],
home: false,
against: [Object] } },
...(and much more)
现在我想获得团队的所有名字,我试图这样做,但我总是未定义,除非我提出类似的东西:
console.log(jsonObject.data.teams["1"]["name"]); //Athletic
console.log(jsonObject.data.teams["2"]["name"]); //Atlético
如何在不获取未定义的情况下迭代该JSON?
非常感谢!!
答案 0 :(得分:1)
使用Object.values
获取数组然后映射
const data = {
'1': {
id: 1,
name: 'Athletic',
slug: 'athletic'
},
'2': {
id: 2,
name: 'Man Utd',
slug: 'man-utd'
},
'3': {
id: 3,
name: 'Liverpool',
slug: 'liverpool'
}
};
const getTeams = data =>
Object.values(data)
.map(team => team.name);
console.log(getTeams(data));
答案 1 :(得分:0)
使用函数Object.values
获取值,并使用for-loop
循环遍历该数组:
Object.values(jsonObject.data.teams).forEach(function(team) {
console.log(team.name)
})
var jsonObject = { data: { teams: { '1': { id: 1, name: 'Athletic', slug: 'athletic', nextMatch: { id: 4665, date: 1522505700, round: [Object], home: true, against: [Object] } }, '2': { id: 2, name: 'Atlético', slug: 'atletico', nextMatch: { id: 4668, date: 1522608300, round: [Object], home: true, against: [Object] } }, '3': { id: 3, name: 'Barcelona', slug: 'barcelona', nextMatch: { id: 4666, date: 1522521900, round: [Object], home: false, against: [Object] } } } }}
Object.values(jsonObject.data.teams).forEach(function(team) {
console.log(team.name);
});
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 2 :(得分:0)
为了以最简单的方式迭代每个团队的名称,您可以遍历每个团队,然后访问每个团队的名称:
for (var id in jsonObject.teams) {
if (jsonObject.teams.hasOwnProperty(id)) {
console.log(jsonObject.teams[id].name);
}
}
但是,当你说你“未定义”时,我不确定你的意思。您能否告诉我们您尝试这样做的方式,以便我们能够理解您理解中的错误?