我有如下json模式:请让我知道上述值的json模式的正确方法。以便使用enum
沿着pattern
来验证值
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "array",
"items":
{
"type": "object",
"properties": {
"p1": {
"type": "string",
"enum": ["ABC","pqr"]
},
"p2": {
"type": "string",
"enum": ["{{1}}","{{2}}","{{3}}"],
"pattern":"*"
},
"p3": {
"type": "string"
}
},
"required": ["p1","p2"]
}
}
我想验证以下一组值:
数值:[{"p1":"pqr", "p2": "{{1}}_{{2}}_{{3}"}]
请让我知道上述值的json模式的正确方法。以便使用enum
沿着pattern
来验证值
我尝试使用包含_的模式,但未得到正确验证
1条答案
按热度按时间njthzxwz1#
正如注解中提到的,组合
enum
中的值是不可能的。相反,您可以尝试使用pattern
和正则表达式。我不确定你有什么组合约束,但是如果你想支持
{{1}}
,{{2}}
,{{3}}
的任意组合,这个正则表达式可以看起来像^{{[123]}}(_{{[123]}})*$
。如果你有最大的重复次数,想强制执行一个顺序等,你可以修改这个正则表达式来满足你的需要。在结构描述中,它看起来会像这样(只有
p2
的最小范例):(note大括号的难看转义)
允许
[{"p2": "{{1}}_{{2}}_{{3}}"}]
但拒绝[{"p2": "{{1}}_foo_{{3}}"}]