数组内的JSON对象中的JSON模式条件检查

时间:2019-09-30 13:42:29

标签: json jsonschema

这里是用于说明目的的所需模式和json。请参阅下面的链接。

JSON Schema and JSON

{
  "id": "123" ,
  "ts": "1234567890",
  "complex_rules":
  [
    {
      "type":"admin",
      "rule":{
       "rights":"all",
       "remarks": "some admin remarks"
       }
    },
    {
      "type":"guest",
      "rights": "limited"
    },
    {
      "type":"anonymous",
      "rights": "blocked"
    }
  ]
}

“ complex_rules”是json对象的数组:

  1. 类型为:“ admin”,“ guest”,“ anonymous”且'type'属性为MANDATORY。
  2. 数组中的每个对象都可以具有自己的结构,但是类型只能是“ admin”,“ guest”,“ anonymous”之一。不能接受其他类型属性。

要评估的条件:

  1. 数组中的对象类型无法再次出现。 (我知道这似乎是不可能的,所以我们可以忽略这一点)
  2. 如果{type = admin对象}中的属性“ rights”具有任何值,那么我们不能在“ {type = guest对象}”中具有“ rights”:“ limited”或任何值。 JSON模式验证必须对此有所抱怨。
  3. 另一种扭曲,可以存在对象{type“:” guest“}或{type”:“ anonymous”}。两种类型不能与其他类型共存。

----更新 上面的链接是解决这个问题的方法。

1 个答案:

答案 0 :(得分:0)

关于1和2:

您需要结合使用ifthennot关键字,以正确的适用性来构造所需的逻辑。

关于3:

  

数组中的对象类型不能再次出现。 (我知道   这似乎是不可能的,所以我们可以忽略它)

是的,这是正确的,从草案7 JSON模式开始是不可能的。