检查JSON

时间:2017-07-03 00:23:20

标签: javascript json node.js

我正在使用棒球运动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",
        },

      ]
    }
  }
} 

2 个答案:

答案 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。

enter image description here

您必须从对象的最后一个属性中删除,

有效JSON: enter image description here

与解析JSON相关,如matetukacs所示。根据您的数据结构,您可以通过该属性访问您的跑步者:outcome.runners.runner