java - 在 JAXB 编码中使用 BigDecimal

标签 java rest jaxb marshalling

我有一个带有 JAXB 字段注释的 REST 网络服务。 例如,

@XmlAccessorType(XmlAccessType.PROPERTY)
public class MyClass{
  private BigDecimal sum;
  //+ getter and setter
}

如果字段“sum”包含大值,例如 1234567890.12345,它编码为 1.23456789012345E9 如何编写仅编码此类的规则?

最佳答案

创建适配器

puclic class BigDecimalAdaptor implements XmlAdapter<String, BigDecimal>

并用于(XmlAccessType.FIELD)访问

@XmlJavaTypeAdapter(BigDecimalAdaptor.class)
private BigDecimal sum;   

并用于(XmlAccessType.PROPERTY)访问

@XmlJavaTypeAdapter(BigDecimalAdaptor.class)  
public getSum()
{
   return sum;
}

适配器可以像

public class BigDecimalAdapter extends XmlAdapter<String, BigDecimal>{

    @Override
    public String marshal(BigDecimal value) throws Exception 
    {
        if (value!= null)
        {
            return value.toString();
        }
        return null;
    }

    @Override
    public BigDecimal unmarshal(String s) throws Exception 
    {
       return new BigDecimal(s);
    }
}

关于java - 在 JAXB 编码中使用 BigDecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13910413/

相关文章:

java - Jersey 两次序列化继承的属性(property)

java - 使用 JAXB 解码 xml 文件

java - IWizard.canFinish 何时执行

java - 有没有比 ArrayList 更适合这种场景的集合?

python - 使用 Python 来 PUT PMML

ios - 从 Swift 函数中的异步调用返回数据

java - 使用 Redis 进行集成测试

java - 通过圆角矩形计算外线

c++ - 如何使用 QNetworkAccessManager 发送 DELETE 请求?

java - 使用 JAX-WS + JAXB 作为返回类型的接口(interface)