我正在使用棒球运动API。我有问题检查是否:
outcome.runners[0]
或
outcome.runners[1]
或
outcome.runners[2]
是否存在。我可以通过
检查 runners 节点是否存在outcome.hasOwnProperty('runners')===true
但是看到第一个第二个或第三个跑步者是否在那里有问题(也有自己的属性不是我理想的使用方法)。这很重要,因为如果只有一个跑步者在节点上
outcome.runners[1] and outcome.runners[2]
不会填充,我将检查不存在的内容,并最终收到错误。下面是一些精益JSON,可以让我了解我正在寻找的内容。
{
"outcome": {
"-type": "pitch",
"-current_inning": "3",
"-current_inning_half": "T",
"runners": {
"runner": [
{
"-id": "ca159e78-05a9-410a-be7b-3ebad5496a88",
"-last_name": "John",
},
{
"-id": "3742039b-7c2a-4f75-be72-d4478ed83a58",
"-last_name": "Smith",
},
]
}
}
}
答案 0 :(得分:0)
根据您提供的示例JSON,其中没有一个实际上正确指向您的跑步者对象:
outcome.runners[0]
outcome.runners[1]
outcome.runners[2]
根据您的数据结构,您可以通过该属性访问您的跑步者:outcome.runners.runner
所以要获得第一名跑步者,你会这样做:
outcome.runners.runner[0]
在Javascript中,为了检查数组中是否存在特定索引处的元素,可以使用简单的if语句:
if (array[index]) {
//do stuff here
}
在你的情况下检查跑步者#1是否存在,你可以这样做:
if (outcome.runners.runner[0]) {
//do stuff here
}
P.S。通过拥有“跑步者”引入的额外等级。跑步者的财产'可以而且应该消除数据结构中的属性,因为它会产生不必要的复杂性并且毫无意义。
您的数据应该更像这样:
{
"outcome": {
"-type": "pitch",
"-current_inning": "3",
"-current_inning_half": "T",
"runners": [
{
"-id": "ca159e78-05a9-410a-be7b-3ebad5496a88",
"-last_name": "John",
},
{
"-id": "3742039b-7c2a-4f75-be72-d4478ed83a58",
"-last_name": "Smith",
},
]
}
}
答案 1 :(得分:0)
观察:您提供的JSON不是有效的JSON。
您必须从对象的最后一个属性中删除,
。
与解析JSON相关,如matetukacs所示。根据您的数据结构,您可以通过该属性访问您的跑步者:outcome.runners.runner