簡體   English   中英

JSON Schema:非空元素唯一的數組

[英]JSON Schema: array where non-null elements are unique

我正在嘗試構建滿足以下條件的 JSON 模式:

  1. 聲明一個至少具有一個屬性的頂級對象
  2. 每個屬性的值將是一個數組,每個數組必須包含正好N
  3. 數組項必須是取自閉區間[J, K]整數,或為null
  4. 每個數組中的整數項在該數組中必須是唯一的
  5. 沒有應用於null唯一性約束(因此N和區間大小KJ之間沒有隱含的關系)

我遇到的問題是#4 和#5。 使用此模式很容易滿足前 3 個要求,加上第 4 個要求的一部分:

{
  "$schema": "http://json-schema.org/draft/2019-09/schema#",
  "type": "object",
  "minProperties": 1,
  "additionalProperties": {
    "type": "array",
    "minItems": N,
    "maxItems": N,
    "items": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": J,
          "maximum": K
        },
        {
          "type": "null"
        }
      ]
    },
    "uniqueItems": true
  }
}

我不確定如何(或者甚至可能)指定一個數組,該數組將uniqueItems約束應用於僅允許項目的子集。 我嘗試將uniqueItems移動到架構的較低級別,希望它可以在有限的范圍內運行,但這不起作用。

這可能可以使用條件,但我還沒有走那條路,因為我不確定它是否真的有效,我希望有一種我忽略的更簡單的方法。

所以,我的問題是:有沒有辦法指定一個 JSON 模式數組,該數組僅對非null的項目有選擇地強制執行唯一性約束?

這超出了uniqueItems的能力,而不是 JSON Schema 能夠表達的約束。 您需要在應用程序業務邏輯的其他地方檢查此要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM