Type.json(枚举)
{
"type" : "string",
"$schema" : "http://json-schema.org/draft-04/schema#",
"title": "type resource",
"name": "type resource",
"description": "List of types",
"id" : "type:v1",
"enum" :
[
"ACC1",
"ACC2"
]
}
Pojo1.json
"properties":{
"type" : {
"$ref" : "Type.json"
},
}
Pojo2.json
"properties":{
"type" : {
"$ref" : "Type.json"
},
}
它不是为枚举创建单独的java文件,而是在其中一个POJO中创建一个枚举,而这个内部公共枚举由另一个POJO引用。
Pojo2.java
private com.Pojo1.Type type;
如何为枚举创建单独的java文件?感谢
答案 0 :(得分:2)
它看起来像创建枚举,因为jsonschema2pojo支持单独的类作为选项。
枚举的生成由org.jsonschema2pojo.rules.EnumRule
执行其中的javadoc声明:
创建了一个Java {@link Enum},其中包含每个枚举的常量 模式中存在的值。枚举名称派生自nodeName, 并且枚举类型本身被创建为拥有类型的内部类。 在极少数情况下,不存在拥有类型(枚举是其中的根) (),然后enum本身就成了一个公共类。
听起来你需要提出功能请求
答案 1 :(得分:2)
在撰写帖子时,jsonschema2pojo库中已有一个功能。在我的调查过程中,我遇到了这篇文章,并且对于无法引用生成的类或枚举的答案感到不满意。所以我在documentation中深入挖掘了一些,它确实为我提供了一些额外的扩展属性,通常用于json模式规范(javaTypes,javaInterfaces,javaEnumNames,javaJsonView,javaName)。扩展属性javaType的文档声明:
jsonschema2pojo支持适用于模式的扩展属性“javaType”,并允许您为生成的Java类型指定完全限定名称。
鉴于这些知识,你的例子需要像这样重写:
Type.json(枚举)
{
"$schema" : "http://json-schema.org/draft-04/schema#",
"type" : "string",
"title": "type resource",
"name": "type resource",
"description": "List of types",
"id" : "type:v1",
"type_enum": {
"javaType" : "com.mycompany.TypeEnum",
"$ref": "TypeEnum.json#/definitions/type_enum"
}
}
我们现在用引用 $ ref 替换你的枚举定义,包括 javaType 的专用包路径和类名。 类型类中相应枚举的引用json模式将如下所示:
TypeEnum.json(枚举)
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"type_enum": {
"enum": [
"ACC1",
"ACC2"
],
"description": "All values for the enum in the type class."
}
}
}
Pojo定义Pojo1和Pojo2保持不变。您甚至可以在其他类中引用枚举,如下所示:
TypeV1_1.json(枚举)
{
"$schema" : "http://json-schema.org/draft-04/schema#",
"type" : "string",
"title": "type version 1.1 resource",
"name": "type version 1.1 resource",
"description": "List of version 1.1 types",
"id" : "type:v1_1",
"type_enum": {
"javaType" : "com.mycompany.TypeEnum",
"$ref": "TypeEnum.json#/definitions/type_enum"
}
}
始终只为您定义的javaType生成枚举。