Я нуб к Джсону. Определяя формат результата моего RESTful API (а именно JSON), я чувствовал, что было бы проще документировать его как мою JSON-схему . При написании одного у меня было несколько вопросов:
- В моем результате JSON, как мне указать URI для схемы, которой он подтверждает?
--edit-- он использует атрибут
$schema
?
- Существуют ли какие-либо соглашения / рекомендации для управления версиями схемы JSON? Есть ли какие-либо атрибуты, которые я должен / могу определить в моей схеме как атрибуты? Я вижу, Сама схема JSON не имеет определенной версии, кроме как в ее URI, указанном как значение ключа
$schema
.
- Могу ли я разбить мою одну БОЛЬШУЮ JSON-схему на несколько меньших и включить одну в другую? Как и #include в C ++, затем обратитесь к нескольким схемам в JSON, который я отправил пользователю как результат.
- Могу ли я определить пользовательское значение для ключа "тип"? Например. Я хотел бы повторно использовать определение «дата» следующим образом:
[игнорируйте эту строку, чтобы форматирование работало для следующего json ..]
{
"date":{
"type":"object",
"properties":{
"month":{
"type":"integer",
"minimum":1,
"maximum":12
},
"year":{
"type":"integer",
"minimum":0
}
}
},
"personInfo":{
"type":"object",
"properties":{
"name":{
"type":"string"
},
"dateOfBirth":{
"type":"date"
}
}
},
"student":{
"type":"object",
"properties":{
"id":{
"type":"personInfo"
},
"pass_out_year":{
"type":"date"
}
}
}
}
вместо предоставления свойств "date" в нескольких местах, например:
{
"personInfo":{
"type":"object",
"properties":{
"name":{
"type":"string"
},
"dateOfBirth":{
"type":"object",
"properties":{
"month":{
"type":"integer",
"minimum":1,
"maximum":12
},
"year":{
"type":"integer",
"minimum":0
}
}
}
}
},
"student":{
"type":"object",
"properties":{
"id":{
"type":"personInfo"
},
"pass_out_year":{
"type":"object",
"properties":{
"month":{
"type":"integer",
"minimum":1,
"maximum":12
},
"year":{
"type":"integer",
"minimum":0
}
}
}
}
}
}
в соответствии с типом 5.1 в спецификации , это невозможно, но кажется, что это такой простой вариант использования!