2012-12-17 20 views
8

我有一個帶有JAXB字段批註的REST webservice。 例如,在JAXB編組中使用BigDecimal

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

如果場「和」包含大的值,例如,1234567890.12345,它執法官到1.23456789E9 如何寫編組僅此一等級規則?

回答

14

創建適配器

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

你寫了一個XmlAdapter<String, BigDecimal>,你用它來註釋總和: @XmlJavaTypeAdapter(BigDecimalStringAdapter.class)