2013-05-16 37 views
29

我想製作一個json文件的模式。它是針對一系列產品的。如何在json模式中定義數組的最小尺寸

JSON的模式是如下類似:

{ 
"$schema": "http://json-schema.org/draft-04/schema#", 
"title": "Product set", 
"type": "array", 
"items": { 
    "title": "Product", 
    "type": "object", 
    "properties": { 
     "id": { 
      "description": "The unique identifier for a product", 
      "type": "number" 
     }, 
     "name": { 
      "type": "string" 
     }, 
     "price": { 
      "type": "number", 
      "minimum": 0, 
      "exclusiveMinimum": true 
     }, 
     "tags": { 
      "type": "array", 
      "items": { 
       "type": "string" 
      }, 
      "minItems": 1, 
      "uniqueItems": true 
     }, 
     "dimensions": { 
      "type": "object", 
      "properties": { 
       "length": {"type": "number"}, 
       "width": {"type": "number"}, 
       "height": {"type": "number"} 
      }, 
      "required": ["length", "width", "height"] 
     }, 
     "warehouseLocation": { 
      "description": "Coordinates of the warehouse with the product", 
      "$ref": "http://json-schema.org/geo" 
     } 
    }, 
    "required": ["id", "name", "price"] 
} 
} 

陣列應的至少一個項目中它。我怎樣才能定義數組的最小值?

我需要添加最小定義嗎?

回答

7

我想不,至少看起草稿minimum只適用於數值而不是數組。

5.1。驗證關鍵字數字實例(數字和整數)
...
5.1.3. minimum and exclusiveMinimum

所以,你要善於與數組分鐘/ maxItems。

4

它看起來像草案v4允許你在找什麼。從http://json-schema.org/example1.html

{ 
"$schema": "http://json-schema.org/draft-04/schema#", 
"title": "Product", 
"description": "A product from Acme's catalog", 
"type": "object", 
"properties": { 
    ... 
    "tags": { 
     "type": "array", 
     "items": { 
      "type": "string" 
     }, 
     "minItems": 1, 
     "uniqueItems": true 
    } 
}, 
"required": ["id", "name", "price"] 
} 

注意,「標籤」屬性被定義爲一個陣列,與物品的最小數目(1)。

38

要設置數組中的最小項目數,請使用「minItems」。

請參見:

http://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.3

http://jsonary.com/documentation/json-schema/?section=keywords/Array%20validation

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title": "Product", 
    "description": "A product from Acme's catalog", 
    "type": "object", 
    "properties": { 
     ... 
     "tags": { 
      "type": "array", 
      "items": { 
       "type": "string" 
      }, 
      "minItems": 1, 
      "maxItems": 4, 
      "uniqueItems": true 
     } 
    }, 
    "required": ["id", "name", "price"] 
    } 
+1

一個例子比鏈接(它可能會隨着時間的推移而更加有用) –

0

如果你期待一個空數組,其定義是這樣的。

{ 
    "items": [ {} ], 
    "additionalItems": false 
}