我有一个要验证的JSON。
数组中有一个对象,每个对象中都有一个名为name
的属性。
我要第一个验证是否有3个对象。 而且我想验证每个属性的值。
{
"hello": [
{
"world": "value 1"
},
{
"world": "value 2"
},
{
"world": "value 3"
}
]
}
我想使用JS0N模式验证JSON是否具有value 1
,value 2
,value 3
答案 0 :(得分:0)
使用JSON Extended Structural Schemas
(JESS)的语言,这三个要求可以用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。 jq有一个红宝石。