java - Jaxb 编码(marshal)原始类型

标签 java jaxb double marshalling primitive

我有一个具有基本类型 double 和 long 的类。在编码时,我必须避免包含零值的变量。尝试了 @XmlJavaTypeAdapter 并在同一内部尝试返回 null 值 - 但失败了。

有办法吗? 搜索了其他帖子,没有找到解决办法

最佳答案

使用以下适配器

import javax.xml.bind.annotation.adapters.XmlAdapter;

public class DoubleAdapter extends XmlAdapter<Object, Double> {

public Object marshal(Double value) {
    if(value == Double.MIN_VALUE){
        return null;
    }
    return value;
}

public Double unmarshal(Object value) {
    return (Double)value;

}
}

它可以在模型类中这样使用:

@XmlRootElement
public class MyModelClass {
   
   @XmlJavaTypeAdapter(type=double.class, value = DoubleAdapter.class)  
   double someField;
}

关于java - Jaxb 编码(marshal)原始类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47806608/

相关文章:

java - java中的 double 超出范围

java - 可以将 float(或 double)设置为 NaN 吗?

java - 如何用正确的输出计算java中的 double 值?

java - 如何告诉 JAXB 在运行时序列化哪些字段?

java - 如何在redhat linux中将JDK从Oracle升级到Zulu

java - 要求子类设置父类的数据成员

java - 手动入队的弱引用状态如何?

java - 在 android 上使用 jackson-dataformat-xml

java - 用于更改类名称的 Jaxb 绑定(bind)不起作用

java - 将实体字段更改为不同类型的字段