2013-05-16 20 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"] 
} 
} 

アレイは、少なくとも一つのアイテムがそれにすべきです。どのようにして配列の最小値を定義できますか?

私はminimun definationを追加する必要がありますか?

答えて

7

少なくとも、作業草案を見て、少なくともminimumは配列ではなく数値にのみ適用されます。

5.1。数値の場合(数と整数)
の検証キーワード...
5.1.3. minimum and exclusiveMinimum

は、だから、アレイ用分/ maxItemsと良いことがあります。

4

ドラフトv4のように、あなたが探しているものが許されています。 http://json-schema.org/example1.htmlから「タグ」プロパティは項目(1)の最小数と、配列として定義されていること

{ 
"$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"] 
} 

が気づきます。

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 
} 
関連する問題