Arrays 嵌套在JSON中

Arrays 嵌套在JSON中,arrays,json,Arrays,Json,我无法让下面的JSON进行验证。它在这里崩溃: "Head Coach": ["Baseball", "Basketball - Boys", "Basketball", "Volleyball - Girls", "Volleyball", "Spiritline"] 没有最后一个数组就可以了。有什么想法吗 试试下面的方法 {“userprofileid”:12547,“电子邮件”:cusdtrojans@gmail.com“,”第一名“:”玛丽贝尔“,”中间名“:”null“,”姓氏“:

我无法让下面的JSON进行验证。它在这里崩溃:

"Head Coach": ["Baseball", "Basketball - Boys", "Basketball", "Volleyball - Girls", "Volleyball", "Spiritline"]
没有最后一个数组就可以了。有什么想法吗


试试下面的方法

{“userprofileid”:12547,“电子邮件”:cusdtrojans@gmail.com“,”第一名“:”玛丽贝尔“,”中间名“:”null“,”姓氏“:”瓦斯克斯“,”前缀“:”null“,”后缀“:”null“,”学校“:”[{”学校ID“:417,“名称“:”克利夫顿高中“,”地址“:”4523阿帕洛萨街“,”地址“:”null“,”城市“:”克利夫顿“,”州“:”AZ“,”zip“:”85533“,”角色“:”[“体育总监”、“首席秘书”、“剧院”、“媒体顾问”、“网站管理员”、“主教练”、“棒球”、“篮球男孩”、“篮球”、“排球女孩”、“排球”、“精神线”]}

“主教练”:
应该是
“主教练”,
这是格式化的版本

{
   "userprofileid":12547,
   "email":"cusdtrojans@gmail.com",
   "first_name":"Maribel",
   "middle_name":null,
   "last_name":"Vasquez",
   "prefix":null,
   "suffix":null,
   "schools":[
      {
         "schoolid":417,
         "name":"Clifton High School",
         "addr":"4523 Appaloosa St.",
         "addr2":null,
         "city":"Clifton",
         "state":"AZ",
         "zip":"85533",
         "roles":[
            "Athletic Director",
            "Principal Secretary",
            "Theatre",
            "Media Adviser",
            "Webmaster",
            "Head Coach",
            [
               "Baseball",
               "Basketball - Boys",
               "Basketball",
               "Volleyball - Girls",
               "Volleyball",
               "Spiritline"
            ]
         ]
      }
   ]
}

试试这个,这样可以确保你有一个“主教练”的名字来引用这个列表

{
    "userprofileid": 12547,
    "email": "cusdtrojans@gmail.com",
    "first_name": "Maribel",
    "middle_name": null,
    "last_name": "Vasquez",
    "prefix": null,
    "suffix": null,
    "schools": [{
        "schoolid": 417,
        "name": "Clifton High School",
        "addr": "4523 Appaloosa St.",
        "addr2": null,
        "city": "Clifton",
        "state": "AZ",
        "zip": "85533",
        "roles": [
            "Athletic Director",
            "Principal Secretary",
            "Theatre", "Media Adviser",
            "Webmaster", {
                "Head Coach": [
                    "Baseball",
                    "Basketball - Boys",
                    "Basketball",
                    "Volleyball - Girls",
                    "Volleyball",
                    "Spiritline"
                ]
            }
        ]
    }]
}

显然,以下内容无效

"roles": ["Athletic Director",
    "Principal Secretary",
    "Theatre",
    "Media Adviser",
    "Webmaster",
    "Head Coach": ["Baseball", "Basketball - Boys", "Basketball", "Volleyball - Girls", "Volleyball", "Spiritline"]
]
因为
角色
是一个数组,但您试图在其中包含
东西“Head Coach”:
,它看起来像对象中的属性

问题在于您的数据模型:您希望将单个角色指定为数组中的字符串,但对于
主教练的角色,您需要额外的信息,即此人担任主教练的运动。我建议将
角色
设为对象,角色作为属性,值为
true
I如果您只想指定该角色,而不需要其他信息:

"roles": {
  "Athletic Director": true,
  "Principal Secretary": true,
  "Theatre": true,
  "Media Adviser": true,
  "Webmaster": true,
  "Head Coach": [
    "Baseball", 
    "Basketball - Boys", 
    "Basketball", "Volleyball - Girls", 
    "Volleyball", 
    "Spiritline"
  ]
}
下面是一个真正简单的示例:

Object.keys(roles).forEach(role => {
  const value = roles[role];

  if (Array.isArray(value)) {
    console.log(role, 'of', value.join(', '));
  } else if (value === true) {
    console.log(role);
  } else {
    console.error(role, "has unknown value");
  }
});

任何JSON验证器都应该指出错误的确切位置。您可以复制并粘贴JSON,它会告诉您您的JSON是否有效。此JSON进行验证,但它可能不符合OP的要求,即将各种运动(如
棒球
主教练
的角色相关联。我们不能cess在这个JSON中的主教练?如果我们可以,那么我们也可以访问列表成员。非常感谢帮助/课程@torazaburo。非常感谢。您关于更改数据模型的建议非常有意义。我将很快实施。
Object.keys(roles).forEach(role => {
  const value = roles[role];

  if (Array.isArray(value)) {
    console.log(role, 'of', value.join(', '));
  } else if (value === true) {
    console.log(role);
  } else {
    console.error(role, "has unknown value");
  }
});