2015-04-21 87 views
0

下面是我的JSON模式的摘錄。JSON模式 - 可能從一個對象引用多個模式?

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "type": "object", 
    "properties": { 
     "images": { 
      "type": "array", 
      "items": { "$ref": "#/definitions/bits" }, 
     } 
    }, 
    "definitions": { 
     "identifier": { 
      "type": "string" 
     }, 
     "bits": { 
      "type": "integer", 
      "enum": [ 
       8, 
       16, 
       32 
      ] 
     } 
    } 
} 

作爲指定,相信圖像的陣列,其中每個元素包含一個字符串標識符和一個整數,其值可以是8,16或32,將被認爲是有效的JSON數據。

這對我的一些JSON數據很好。

但是如果我想進一步約束模式,使整數值只能是32呢?我如何做到這一點,同時仍然允許一些JSON數據對原始模式有效?

例如,是否有可能在一個對象中引用兩個模式,例如,例如:

items": { "$ref": "#/definitions/bits" AND "$ref": "#/definitions/otherSchema"} 

回答

1

您可以使用allOf針對多個模式進行驗證。

{ 
    "items": { 
     "allOf": [ 
      { "$ref": "#/definitions/bits" }, 
      { "$ref": "#/definitions/otherSchema" } 
     ] 
    } 
} 
+0

如果otherSchema定義「bits」爲32,你是說上面的語法會給我我想要的嗎?它不會被視爲兩個獨立的屬性嗎? – ksl

+1

是的,'allOf'中的所有模式都適用於相同的模式。在這種情況下,數組中的所有項都必須針對'allOf'中的兩個模式進行驗證。 'oneOf','anyOf'和'not'是可用於在一箇中引用多個模式的其他關鍵字。 – Jason

相關問題