例えば、私はJSONスキーマを持っているが、以下のようになります。JSONスキーマがJavaの別のスキーマと互換性があることを伝える方法は?
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"billing_address": { "$ref": "#/definitions/address" },
"shipping_address": { "$ref": "#/definitions/address" }
}
"definitions": {
"address": {
"type": "object",
"properties": {
"street_address": { "type": "string" },
"city": { "type": "string" },
"state": { "type": "string" }
},
"required": ["street_address", "city", "state"]
}
}
}
このスキーマは、それらの両方は3が含まれているタイプアドレス、である、2 vairable billing_addressとshipping_addressを持つオブジェクトを示しますプロパティ:street_address,都市および州。
は今、私は別の「大きな」スキーマました:あなたが見ることができるように
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"billing_address": { "$ref": "#/definitions/address" },
"shipping_address": { "$ref": "#/definitions/address" },
"new_address": { "$ref": "#/definitions/address" }
}
"definitions": {
"address": {
"type": "object",
"properties": {
"street_address": { "type": "string" },
"city": { "type": "string" },
"state": { "type": "string" },
"zip_code": { "type": "string" }
},
"required": ["street_address", "city", "state"]
}
}
}
を、私はスキーマに新しいプロパティnew_addressのを追加し、アドレスにZIP_CODEと呼ばれる新しいプロパティがあります(は必須プロパティではありません)
古いJSONスキーマからオブジェクトを作成した場合、それも新しいJSONスキーマで使用できるようにする必要があります。この場合、新しいスキーマは古いスキーマと互換性があります。 (別の言葉では、新しいスキーマは古いスキーマの拡張ですが、変更はありません)
Javaでスキーマが他のスキーマと互換性があるかどうかを判断するにはどうすればよいですか?複雑なケースも考慮する必要があります(たとえば、数字フィールドの「最小」プロパティ)。
十分に良いかもしれでしょう。独自のjsonバリデーターを実装する必要があります。しかし、これは本当に良いことではありません... – dit