我正在读一个像这样的json对象:
var url = "not really important"
var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});
var json = response.getContentText();
var data = JSON.parse(json);
var var seeds = data.entities.seeds;
现在种子有价值,大量的,所以我知道我的所有代码都可以运行到这一点。现在我的问题是解析我需要的某些信息。在这个特定情况下,我需要获得每个参赛者的名字。每个种子与参赛者的比例为1:1,因此我必须使用此API来获取它。
如果我运行以下代码Logger.log(seeds[0].mutations.entrants);
,我将得到以下输出:
{745803 = {isPlaceholder = null,name = My Team Name,participantIds = [827364,827540,827994],initialSeedNum = 1,id = 745803,playerIds = {827364 = 179632,827540 = 139681,827994 = 268019} }}
正如您所见,name
位于名为745803
的对象下。我的问题是该对象名称发生了变化,我不知道每个种子的名称是什么。因此,我需要抓住参赛者列出的第一个结果,因为它始终是我需要的参赛者。我怎样才能做到这一点?我尝试了以下内容,但它只是以未定义的方式返回:
seeds[0].mutations.entrants[0].name
底线是,如何在不知道该元素名称的情况下获取基于json的对象中的第一个元素?
答案 0 :(得分:0)
您可以使用" for"来检索JSON密钥。在这种情况下,即使更改了键,也可以检索它。虽然我不知道您的JSON结构的详细信息,但是根据您的问题,我们会考虑以下两种模式。
模式1:
var json1 = {
"entrants": {
"745803": {
"isPlaceholder": null,
"name": "My Team Name",
"participantIds": [
827364,
827540,
827994
],
"initialSeedNum": 1,
"id": 745803,
"playerIds": {
"827364": 179632,
"827540": 139681,
"827994": 268019
}
}
}
};
for (var i in json1.entrants){
Logger.log(json1.entrants[i].name)
}
>>> My Team Name
模式2:
var json2 = {
"entrants": [
{
"745803": {
"isPlaceholder": null,
"name": "My Team Name",
"participantIds": [
827364,
827540,
827994
],
"initialSeedNum": 1,
"id": 745803,
"playerIds": {
"827364": 179632,
"827540": 139681,
"827994": 268019
}
}
}
]
};
for (var i in json2.entrants){
for (var j in json2.entrants[i]){
Logger.log(json2.entrants[i][j].name)
}
}
>>> My Team Name
如果我误解了你的问题,我很抱歉。