Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON模式:非空元素唯一的数组_Javascript_Arrays_Json_Jsonschema_Unique Constraint - Fatal编程技术网

Javascript 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#", “类型”:

我正在尝试构建符合以下条件的JSON模式:

  • 声明至少具有一个属性的顶级对象
  • 每个属性的值都将是一个数组,每个数组必须精确地包含
    N
  • 数组项必须是从闭合区间
    [J,K]
    null
  • 每个数组中的整数项在该数组中必须是唯一的
  • 没有唯一性约束应用于
    null
    (因此
    N
    和区间大小
    K-J
    之间没有隐含关系)
  • 我遇到的问题是4和5。使用此模式很容易满足前3个要求,以及第4个要求的一部分:

    {
    “$schema”:”http://json-schema.org/draft/2019-09/schema#",
    “类型”:“对象”,
    "财产":1,,
    “附加属性”:{
    “类型”:“数组”,
    “minItems”:N,
    “maxItems”:N,
    “项目”:{
    “任何人”:[
    {
    “类型”:“整数”,
    “最低限度”:J,
    “最大值”:K
    },
    {
    “类型”:“空”
    }
    ]
    },
    “唯一项”:真
    }
    }
    
    我不确定如何(或者是否可能)指定一个数组,将
    uniqueItems
    约束仅应用于允许项的子集。我尝试将
    uniqueItems
    移动到模式的较低级别,希望它可以在有限的范围内运行,但这不起作用

    这可能是可能的使用条件,但我还没有走这条路,因为我不确定它是否真的会工作,我希望有一个更容易的方法,我忽略了


    因此,我的问题是:有没有一种方法可以指定一个JSON模式数组,该数组只对非
    null
    的项选择性地强制执行唯一性约束?

    这超出了
    uniqueItems
    的能力,JSON模式无法表达约束。您需要在应用程序的业务逻辑中的其他地方检查此要求。

    谢谢,我也得出了相同的结论,但认为值得发布,以防万一。如果有人想证明我们两个都错了,我会把这个问题留待一会儿,但这可能是正确的答案,这是不可能的。是否绝对要求您的列表中可以有多个
    null
    项?如果没有,则更容易取消该要求,以便您可以使用
    uniqueItems
    关键字。