2015-01-29 5 views
3

В настоящее время Schema определение не документированы вообще, единственные ресурсы, я мог бы найти следующие:Как создать вложенную схему?

http://support.apiary.io/knowledgebase/articles/147279-json-schema-validation https://github.com/apiaryio/api-blueprint/issues/112

, но ни один из этих примеров не обсудить, как создать вложенную схему.

Я хотел бы проверить этот ответ:

{ 
    date: (datetime), 
    url: (url), 
    changes: [ 
     { 
      date: (datetime), 
      url: (url) 
     }, 
     ... 
    ], 
    items: [ 
     { 
      name: (string), 
      url: (url) 
     }, 
     ... 
    ] 
} 

на основе моих знаний, я уже начал создавать схемы, что выглядит как этот

{ 
    "type": "object", 
    "required": true, 
    "properties": { 
     "date": { 
      "type": "datetime", 
      "required": true 
     }, 
     "url": { 
      "type": "string", 
      "required": true 
     }, 
     "changes": { 
      "type": "array", 
      "required": true 
     }, 
     "items": { 
      "type": "array", 
      "required": true 
     } 
    } 
} 

но как создать схему для вложенного item и change?

Какие типы я могу использовать?

как подтвердить datetime? ожидаемое значение: YYYY-MM-DD HH:MM:SS

+0

ok Я нашел это https://github.com/Baggz/Amanda/blob/master/docs/json/comparison.md, что может быть ответом на мой вопрос. однако это безумие ... – gondo

ответ

0

до сих пор я закончил это. еще я должен проверить это, как только мой конец API точка будет и работать

{ 
    "type": "object", 
    "required": true, 
    "properties": { 
     "date": { 
      "type": "string", 
      "format": "date-time", 
      "required": true 
     }, 
     "url": { 
      "type": "string", 
      "format": "url", 
      "required": true 
     }, 
     "changes": { 
      "type": "array", 
      "required": true, 
      "items": { 
       "type": "object", 
       "required": true, 
       "properties": { 
        "date": { 
         "type": "string", 
         "format": "date-time", 
         "required": true 
        }, 
        "url": { 
         "type": "string", 
         "format": "url", 
         "required": true 
        } 
       } 
      } 
     }, 
     "items": { 
      "type": "array", 
      "required": true, 
      "items": { 
       "type": "object", 
       "required": true, 
       "properties": { 
        "name": { 
         "type": "string", 
         "required": true 
        }, 
        "url": { 
         "type": "string", 
         "format": "url", 
         "required": true 
        } 
       } 
      } 
     } 
    } 
} 
0

Отклик тест следующий фрагмент кода JSON основан на вашем примере. Массивы включают два объекта, поэтому модификации, которые вы хотите протестировать, проще.

{ 
    "date": "2015-02-05T00:00:00.000Z", 
    "url": "mysite.com", 
    "changes": [ 
    { 
     "date": "2015-03-05T00:00:00.000Z", 
     "url": "mysite.com/edit/1" 
    }, 
    { 
     "date": "2015-03-04T00:00:00.000Z", 
     "url": "mysite.com/edit/4" 
    } 
    ], 
    "items": [ 
    { 
     "name": "Item One", 
     "url": "mysite.com/items/1" 
    }, 
    { 
     "name": "Item Two", 
     "url": "mysite.com/items/2" 
    } 
    ] 
} 

Следующая схема будет проверять выше JSON с использованием спецификации проекта-04.

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title": "Nested Example", 
    "type": "object", 
    "properties": { 
    "date": { 
     "type": "string", 
     "format": "date-time" 
    }, 
    "url": { 
     "type": "string", 
     "format": "uri" 
    }, 
    "changes": { 
     "type": "array", 
     "items": { 
     "type": "object", 
     "properties": { 
      "date": { 
      "type": "string", 
      "format": "date-time" 
      }, 
      "url": { 
      "type": "string", 
      "format": "uri" 
      } 
     }, 
     "required": ["date", "url"] 
     } 
    }, 
    "items": { 
     "type": "array", 
     "items": { 
     "type": "object", 
     "properties": { 
      "name": { 
      "type": "string" 
      }, 
      "url": { 
      "type": "string", 
      "format": "uri" 
      } 
     }, 
     "required": ["name", "url"] 
     } 
    } 
    }, 
    "required": ["date", "url", "changes", "items"] 
} 

Следующие типы доступны:

  • массив
  • булево
  • целое
  • номер
  • нуль
  • объект
  • строка

Primitive Types


Validation


У меня не было времени, чтобы исследовать инструменты и рабочий процесс, чтобы сделать это на месте, поэтому я использую this для Проверка.