我知道在大多数情况下(除了一些罕见的情况),在json模式中定义的枚举类型都嵌入在拥有者的类中。我有一个方案,该枚举没有被嵌入,但它被创建为一个单独的类 我想重写此行为,并强制将枚举创建为内部类。这样做的原因是由于在json模式(我无法修改)中,该枚举与其他定义冲突,而另一个定义具有相同的枚举名称,并且其中一个定义丢失。
{
"$schema": "http://json-schema.org/draft-03/schema#",
"javaType": "mypackage.Order",
"type": "object",
"properties": {
"@id": {
"type": "string"
},
"property2": {
"type": "string"
},
"property3": {
"type": "number"
},
"property4": {
"type": "array",
"items": {
"$ref": "#/definitions/defintion1"
}
}
},
"definitions": {
"defintion1": {
"$schema": "http://json-schema.org/draft-03/schema#",
"javaType": "mypackage.order.Definition1",
"type": "object",
"properties": {
"@id": {
"type": "string"
},
"enum1": {
"enum": [
"enum1_1",
"enum1_2",
"enum1_3"
]
},
"arrayOfEnums": {
"type": "array",
"items": {
"enum": [
"enum2_1",
"enum1_2",
"enum2_3"
]
}
}
}
}
}
}
当我运行mvn -U clean install
时:我得到enum1作为Definition1的内部类生成,但arrayOfEnums是一个枚举数组,并且该enum作为单独的类生成(它在ArrayOfEnum类中生成) 。如何强制在Definition1类内部生成它?
在另一个json模式文件中,我有另一个ArrayOfEnum定义,该定义有冲突:
{
...
"definition_ArrayOfEnum": {
"$schema": "http://json-schema.org/draft-03/schema#",
"javaType": "mypackage.order.ArrayOfEnum",
"type": "object",
"properties": {
"property1": {
"type": "string"
}
}
}
...
}
最后,最后一个定义丢失。我该如何保留两者?如果在第一个定义中,Enum作为内部类生成;没关系的任何解决方法?正如我提到的,由于我不是所有者,所以无法更改json模式