我正在以
返回的JSON进行调用这是JSON文件的实际部分。不仅限于此,但我只是想展示如何获取嵌套值。
{
player: {
id: 277013255,
game: "bf4",
plat: "pc",
name: "f1ss1on",
tag: "MCG",
dateCheck: 1524851054474,
dateUpdate: 1524849279114,
dateCreate: 1385342286868,
dateStreak: 1524849279114,
lastDay: "20160222",
country: "",
countryName: null,
rank: {
nr: 33,
imgLarge: "bf4/ranks/r33.png",
img: "r33",
name: "Master Sergeant III",
needed: 1280000,
next: {
nr: 34,
imgLarge: "bf4/ranks/r34.png",
img: "r34",
name: "Master Sergeant IV",
needed: 1345000,
curr: 1317090,
relNeeded: 65000,
relCurr: 37090,
relProg: 57.06153846153846
}
},
我的代码是:
$(document).ready(function() {
"use strict";
var html = '';
$("button").click(function() {
$.getJSON("https://api.bf4stats.com/api/playerInfo?plat=pc&name=f1ss1on&output=json", function(result) {
$.each(result, function(i, entry) {
html += '<ul>';
html += '<li class="name col-5">' + entry.name + '</li>';
html += '<li class="date col-3">' + entry.tag + '</li>';
html += '<li class="assigned col-4">' + entry.rank + '</li>';
html += '</ul>';
});
}
$('div').html(html);
});
});
预期收益应为
但是我得到的是回报:
[对象对象]
未定义
如何正确地将嵌套的JSON对象调用到正确的元素上?
我尝试做:
entry.rank.nr
但这会返回“未捕获的TypeError:无法读取未定义的属性'nr'”
答案 0 :(得分:0)
您正在呼叫的端点不会返回多个玩家,它会返回一个player
对象,因此我不确定是否需要进行任何循环或each
。
以下似乎很好用:
$.getJSON("https://api.bf4stats.com/api/playerInfo?plat=pc&name=f1ss1on&output=json", function(result) {
var player = result.player;
console.log("Name:", player.name);
console.log("Tag:", player.tag);
console.log("Rank:", player.rank.nr);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
要确切显示查询中出了什么问题,请打开浏览器控制台并进行查看。是以表格形式的result
。
$.getJSON("https://api.bf4stats.com/api/playerInfo?plat=pc&name=f1ss1on&output=json", function(result) {
console.table(result);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
If the table doesn't appear in your console, re-run this snippet with the console already open.
在这里,您可以在表中以行的形式查看正在循环浏览的项目。
第一项是player
,这就是name
和tag
正确返回,而rank
作为对象返回的原因。
第二项是stats
。该行中的结果说明了为什么您的第二次迭代返回name
和tag
作为undefined
,而返回rank
作为33
。
我想那之后您会收到很多undefined
(每件三件)。