验证JSON模式的期望值

时间:2019-07-25 12:54:48

标签: json ruby schema jsonschema

我有一个要验证的JSON。 数组中有一个对象,每个对象中都有一个名为name的属性。

我要第一个验证是否有3个对象。 而且我想验证每个属性的值。

{
  "hello": [
    {
      "world": "value 1"
    },
    {
      "world": "value 2"
    },
    {
      "world": "value 3"
    }
  ]
}

我想使用JS0N模式验证JSON是否具有value 1value 2value 3

1 个答案:

答案 0 :(得分:0)

使用JSON Extended Structural SchemasJESS)的语言,这三个要求可以用JSON编写,如下所示(假设您的意思是world而不是name):< / p>

["&",
 { "hello": [ {"world": "string"} ] },
 {"forall": ".[hello]|length", "equal": 3 },
 {"setof": ".[hello][]|.[world]", "supersetof": ["value 1", "value 2", "value 3" ]}
 ]

这可能不完全是您想要的,例如也许您希望编写约束时不参考顶级键的名称。这可以通过以下方式完成:

["&",
 {"forall": ".[]", "schema":  [ {"world": "string"} ] },
 {"forall": ".[]|length", "equal": 3 },
 {"setof": ".[][]|.[world]", "supersetof": ["value 1", "value 2", "value 3" ]}
 ]

此外,您可以修改上述内容以表达要求,而又不会阻止对象具有其他键。这完全取决于您的真正需求。

请注意,JESS检查器需要运行。 jq有一个红宝石。