我有一个带有JAXB字段注释的REST Web服务。 例如,
@XmlAccessorType(XmlAccessType.PROPERTY)
public class MyClass{
private BigDecimal sum;
//+ getter and setter
}
如果字段“sum”包含大值,例如1234567890.12345,则它将组合为1.23456789012345E9 如何编写仅用于编组此类的规则?
答案 0 :(得分:17)
创建适配器
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);
}
}
答案 1 :(得分:2)
你写了一个XmlAdapter<String, BigDecimal>
并用它来注释和的getter:
@XmlJavaTypeAdapter(BigDecimalStringAdapter.class)
。