Javascript JSON模式:非空元素唯一的数组
我正在尝试构建符合以下条件的JSON模式:Javascript JSON模式:非空元素唯一的数组,javascript,arrays,json,jsonschema,unique-constraint,Javascript,Arrays,Json,Jsonschema,Unique Constraint,我正在尝试构建符合以下条件的JSON模式: 声明至少具有一个属性的顶级对象 每个属性的值都将是一个数组,每个数组必须精确地包含N项 数组项必须是从闭合区间[J,K]或null 每个数组中的整数项在该数组中必须是唯一的 没有唯一性约束应用于null(因此N和区间大小K-J之间没有隐含关系) 我遇到的问题是4和5。使用此模式很容易满足前3个要求,以及第4个要求的一部分: { “$schema”:”http://json-schema.org/draft/2019-09/schema#", “类型”:
N
项[J,K]
或null
null
(因此N
和区间大小K-J
之间没有隐含关系){
“$schema”:”http://json-schema.org/draft/2019-09/schema#",
“类型”:“对象”,
"财产":1,,
“附加属性”:{
“类型”:“数组”,
“minItems”:N,
“maxItems”:N,
“项目”:{
“任何人”:[
{
“类型”:“整数”,
“最低限度”:J,
“最大值”:K
},
{
“类型”:“空”
}
]
},
“唯一项”:真
}
}
我不确定如何(或者是否可能)指定一个数组,将uniqueItems
约束仅应用于允许项的子集。我尝试将uniqueItems
移动到模式的较低级别,希望它可以在有限的范围内运行,但这不起作用
这可能是可能的使用条件,但我还没有走这条路,因为我不确定它是否真的会工作,我希望有一个更容易的方法,我忽略了
因此,我的问题是:有没有一种方法可以指定一个JSON模式数组,该数组只对非
null
的项选择性地强制执行唯一性约束?这超出了uniqueItems
的能力,JSON模式无法表达约束。您需要在应用程序的业务逻辑中的其他地方检查此要求。谢谢,我也得出了相同的结论,但认为值得发布,以防万一。如果有人想证明我们两个都错了,我会把这个问题留待一会儿,但这可能是正确的答案,这是不可能的。是否绝对要求您的列表中可以有多个null
项?如果没有,则更容易取消该要求,以便您可以使用uniqueItems
关键字。