2014-11-05 3 views
0

Я пытаюсь написать json-схему для своих данных. Данные выглядят таким образом:Json-Schema: несколько элементов одного типа

{ 
    "gold": [ 
     { 
      "id": "goldOne", 
      "name": "firstGold", 
      "title": "Gold 1 earned" 
     }, 
     { 
      "id": "goldTwo", 
      "name": "secondGold", 
      "title": "Gold 2 earned" 
     } 
    ], 
    "silver": [ 
     { 
      "id": "silberOne", 
      "name": "firstSilver", 
      "title": "Silver!" 
     } 
    ], 
    "bronze": [ 
     { 
      "id": "bronzeOne", 
      "name": "firstBronze", 
      "title": "Bronze!" 
     } 
    ] 
} 

Я уже создал схему для «золотого» -array:

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title" : "trophy descriptions", 
    "type": "object", 
    "properties": { 
     gold: { 
      "description": "gold trophies", 
      "type":"array", 
      "items": { 
       "type": "object", 
       "properties": { 
        "id": { 
         "type": "string", 
         "description": "unique identifier" 
        }, 
        "name": { 
         "type": "string", 
         "description": "label of trophy" 
        }, 
        "title": { 
         "type": "string", 
         "description": "description of trophy" 
        } 
       } 
      } 
     } 
    } 
} 

Поскольку «серебро» и «бронза» -arrays содержат элементы тажа типа «золото». Интересно, нужно ли мне три раза записывать один и тот же материал или я могу ссылаться на одно описание?

ответ

2

Да, вы можете определить и эталонные схемы через $ реф ключевое слово:

{ 
    "$schema" : "http://json-schema.org/draft-04/schema#", 
    "title" : "trophy descriptions", 
    "type" : "object", 
    "properties" : { 
     "gold" : { 
      "$ref" : "#/definitions/medal" 
     }, 
     "silver" : { 
      "$ref" : "#/definitions/medal" 
     }, 
     "bronze" : { 
      "$ref" : "#/definitions/medal" 
     } 

    }, 

    "definitions" : { 
     "medal" : { 
      "type" : "array" 
      // and whatever you want here 
     } 
    } 
} 
Смежные вопросы