使用 jsonschema2pojo 转换可变长度值的枚举
Converting enum of variable length values using jsonschema2pojo
我正在尝试为相应的 Java 可变长度值 枚举创建 json schema
。资料如下:
JSON 尝试过:
"Info": {
"type": "string",
"enum": [
"TITLE",
"ADDRESS",
"NAME";
]
}
但这不会提供所需的输出,而是转换后的 java class 我得到的是
当前输出:
public static enum Info {
TITLE("TITLE"),
ADDRESS("ADDRESS"),
NAME("NAME");
}
需要Java输出:
public enum Info {
TITLE(45),
ADDRESS(100),
NAME(45);
private Integer maxLength;
Info(Integer maxLength) {
this.maxLength = maxLength;
}
public Integer getMaxLength() {
return maxLength;
}
}
无法找到解决此问题的方法。非常感谢任何帮助。
据我所知目前这是不可能的。如果您查看源代码,那么枚举是由 org.jsonschema2pojo.rules.enumRule 生成的。 jsonschema2pojo 为每个枚举提供一个构造函数,对于您的用例,它需要采用一个 Integer 类型的参数。构造函数在line 199中通过以下代码生成
JVar valueParam = constructor.param(String.class, VALUE_FIELD_NAME);
也就是说,构造函数被硬编码为始终采用 String 类型的单个参数。
您可能做的最好的事情是使用 javaEnumNames 属性,它允许您指定枚举的名称和值(限制值始终是字符串)。
{
"javaEnumNames" : [
"TITLE",
"ADDRESS",
"NAME"
],
"enum" : [ 45, 100, 45 ]
}
这个 JSON 片段产生
...
TITLE("45"),
ADDRESS("100"),
NAME("45");
...
我正在尝试为相应的 Java 可变长度值 枚举创建 json schema
。资料如下:
JSON 尝试过:
"Info": {
"type": "string",
"enum": [
"TITLE",
"ADDRESS",
"NAME";
]
}
但这不会提供所需的输出,而是转换后的 java class 我得到的是
当前输出:
public static enum Info {
TITLE("TITLE"),
ADDRESS("ADDRESS"),
NAME("NAME");
}
需要Java输出:
public enum Info {
TITLE(45),
ADDRESS(100),
NAME(45);
private Integer maxLength;
Info(Integer maxLength) {
this.maxLength = maxLength;
}
public Integer getMaxLength() {
return maxLength;
}
}
无法找到解决此问题的方法。非常感谢任何帮助。
据我所知目前这是不可能的。如果您查看源代码,那么枚举是由 org.jsonschema2pojo.rules.enumRule 生成的。 jsonschema2pojo 为每个枚举提供一个构造函数,对于您的用例,它需要采用一个 Integer 类型的参数。构造函数在line 199中通过以下代码生成
JVar valueParam = constructor.param(String.class, VALUE_FIELD_NAME);
也就是说,构造函数被硬编码为始终采用 String 类型的单个参数。
您可能做的最好的事情是使用 javaEnumNames 属性,它允许您指定枚举的名称和值(限制值始终是字符串)。
{
"javaEnumNames" : [
"TITLE",
"ADDRESS",
"NAME"
],
"enum" : [ 45, 100, 45 ]
}
这个 JSON 片段产生
...
TITLE("45"),
ADDRESS("100"),
NAME("45");
...