Аз съм нуб на json. Докато определях формата на резултата на моя RESTful API (а именно JSON), почувствах, че ще бъде по-лесно да го документирам като моя собствена JSON схема. Докато пишех един, имах няколко въпроса:
- В моя резултат JSON, как да посоча URI към схемата, към която се потвърждава? --edit-- използва ли атрибут
$schema
? - Има ли някакви конвенции/насоки за версия на JSON схема? Има ли някои атрибути, които трябва/мога да дефинирам в моята схема като атрибути? Виждам, че самата JSON схема няма дефинирана версия, освен в нейния URI, посочен като стойност на ключ
$schema
. - Мога ли да разделя моята една BIG JSON схема на множество по-малки и да включа една в друга? Като #include в C++, след това се обърнете към множество схеми в JSON, който изпратих на потребителя като резултат.
- Мога ли да дефинирам персонализирана стойност за ключ "type"? напр. Бих искал да използвам отново дефиницията на "дата" по този начин:
[игнорирайте този ред, той е, за да накарате форматирането да работи за следване на 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"
}
}
}
}
вместо да предоставя свойства на "дата" на множество места като това:
{
"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 в спецификацията, това е не е възможно, но изглежда като такъв основен случай на употреба!