0

我正在尝试为相应的可变长度值json schema的 Java枚举创建一个。信息如下:

JSON试过了:

"Info": {
      "type": "string",
      "enum": [
        "TITLE",
        "ADDRESS",
        "NAME";
      ]
     }

但这不会提供所需的输出,而是我得到的转换后的 java 类是

电流输出:

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;
    }
}

无法找到解决此问题的方法。将不胜感激任何帮助。

4

1 回答 1

2

据我所知,目前这是不可能的。如果您查看源代码,那么枚举是由 org.jsonschema2pojo.rules.enumRule 生成的。jsonschema2pojo 为每个枚举提供了一个构造函数,对于您的用例,它需要一个整数类型的参数。构造函数由以下代码在第 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");
...
于 2016-06-03T20:17:33.953 回答