12

JAXB フィールド アノテーションを含む REST Web サービスがあります。例えば、

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

フィールド "sum" に 1234567890.12345 などの大きな値が含まれている場合、1.23456789012345E9 にマーシャリングします。このクラスのみをマーシャリングするルールを作成するにはどうすればよいですか?

4

2 に答える 2

21

アダプターを作成する

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);
    }
}
于 2012-12-17T08:19:57.403 に答える
2

あなたはを書き、XmlAdapter<String, BigDecimal>それで合計のゲッターに注釈を付けます: @XmlJavaTypeAdapter(BigDecimalStringAdapter.class)

于 2012-12-17T08:17:28.057 に答える