私はjsonの初心者です。RESTful APIの結果(つまりJSON)の形式を定義している間、それを自分のJSONスキーマとして文書化する方が簡単だと感じました。1つを書いている間、私はいくつかの質問をしました:
- 結果のJSONで、確認するスキーマにURIを指定するにはどうすればよいですか?--編集--属性を使用して
$schema
いますか? - JSONスキーマのバージョン管理に関する規則/ガイドラインはありますか?スキーマ内で属性として定義する必要がある/定義できる属性はありますか?JSONスキーマ自体には、キーの値として指定されたURIを除いて、バージョンが定義されていないことがわかります
$schema
。 - 1つの大きなJSONスキーマを複数の小さなスキーマに分割し、1つを別のスキーマに含めることはできますか?C ++の#includeのように、結果としてユーザーに送信した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"
}
}
}
}
このような複数の場所で「日付」のプロパティを提供する代わりに:
{
"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タイプによると、それは不可能ですが、そのような基本的なユースケースのようです!