相关疑难解决方法(0)

通过JAXB为枚举提供自定义值序列化

对于我正在进行的项目,我们使用了很多枚举.模型对象本身由许多小类组成; 然后,我们通过JAXB将此模型作为XML序列化到我们的DB.现在,我们希望能够使用枚举中特定方法的返回来序列化我们的枚举值; 给出的:

public enum Qualifier {
    FOO("1E", "Foo type document"),
    BAR("2", "Bar object");

    private String code, description;

    public Qualifier(String code, String description) {
        this.code = code;
        this.description = description;
    }

    public String getCode() {
        return this.code;
    }

    public String getDescription() {
        return this.description;
    }
}
Run Code Online (Sandbox Code Playgroud)

目前,当序列化为XML时,我们得到类似的东西:

<qualifier>FOO</qualifier>
Run Code Online (Sandbox Code Playgroud)

这是JAXB处理它的方式.但是,我们需要将值作为getCode()的返回值,并且我们的许多枚举都遵循该约定(使用相应的静态方法通过代码进行查找),因此上面的XML片段如下所示:

<qualifier>1E</qualifier>
Run Code Online (Sandbox Code Playgroud)

代替.我们可以对它进行注释@XmlEnum@XmlEnumValue,但是这太乏味-一些枚举有多达30个枚举值,和手动编辑这是不好的.我们也在考虑使用自定义序列化器,但我现在想避免走那条路(但如果这是要走的路,那么我没问题).

有什么想法?

java xml enums jaxb xml-serialization

22
推荐指数
2
解决办法
1万
查看次数

标签 统计

enums ×1

java ×1

jaxb ×1

xml ×1

xml-serialization ×1