目前根本没有记录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 :(得分:0)
{
"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
}
}
}
}
}
}
答案 1 :(得分: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"
}
]
}
以下架构将使用draft-04规范验证上述JSON。
{
"$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"]
}
可以使用以下类型:
我没有时间研究在本地执行此操作的工具和工作流程,所以我一直在使用this进行验证。