第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

JAXB:在特殊值的情況下忽略元素序列化(例如“null”或“Double.NaN”)

JAXB:在特殊值的情況下忽略元素序列化(例如“null”或“Double.NaN”)

犯罪嫌疑人X 2023-03-02 16:38:43
我想用JAXB. 該對(duì)象具有可能具有特殊值的實(shí)例變量,例如null或 在另一種情況下Double.NaN。如果它具有這個(gè)特殊值,我怎么能只忽略實(shí)例變量呢?這可能嗎?一@XmlRootElement@XmlAccessorType(XmlAccessType.FIELD)public class MyClass {   private double value;   private Object object;   public void setValue(double value){this.value = value;}   public double getValue(){return value;}   public void setObject(Object object){this.object = object;}   public Object getObject(){return object;}}value所以在存在Double.NaN和object不存在的情況下null我想得到<?xml version="1.0" encoding="UTF-8" standalone="no"?><MyClass>  <object>    ...  </object></MyClass>在另一種情況下,如果value不是Double.NaN,我object想得到null<?xml version="1.0" encoding="UTF-8" standalone="no"?><MyClass>  <value>1.0</value></MyClass>
查看完整描述

1 回答

?
縹緲止盈

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊

默認(rèn)情況下,空值不會(huì)生成 XML,因此您對(duì)該object屬性的要求已經(jīng)得到處理。

對(duì)于特殊double值,創(chuàng)建一個(gè)專門的方法來(lái)產(chǎn)生 XML值,并抑制or到 XMLvalue的正常映射。valuegetValue()

@XmlTransient這可以通過(guò)使用 注釋或使用 禁用自動(dòng)屬性選擇來(lái)完成XmlAccessType.NONE,因此只有帶注釋的屬性才會(huì)映射到 XML。

這是使用第二種方法的示例:

@XmlRootElement

@XmlAccessorType(XmlAccessType.NONE)

public class MyClass {


    private double value;

    private Foo foo;


    public MyClass() {

    }

    public MyClass(double value, Foo foo) {

        this.value = value;

        this.foo = foo;

    }


    public void setValue(double value){this.value = value;}

    public double getValue(){return this.value;}


    public void setFoo(Foo foo){this.foo = foo;}

    @XmlElement() public Foo getFoo(){return this.foo;}


    @XmlElement(name = "value")

    public Double getXmlValue() {

        if (Double.isFinite(this.value))

            return this.value;

        return null;

    }

}


public class Foo {

    @XmlElement()

    public String getBar() { return "Test"; }

}

測(cè)試


JAXBContext jaxbContext = JAXBContext.newInstance(MyClass.class);

Marshaller marshaller = jaxbContext.createMarshaller();

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);


marshaller.marshal(new MyClass(Math.PI, null), System.out);

marshaller.marshal(new MyClass(Double.NaN, new Foo()), System.out);

輸出


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<myClass>

    <value>3.141592653589793</value>

</myClass>

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<myClass>

    <foo>

        <bar>Test</bar>

    </foo>

</myClass>

注意<foo>第一個(gè)中缺少 ,因?yàn)樗莕ull,<value>第二個(gè)中缺少,因?yàn)樵揘aN值作為null值返回。


正常使用調(diào)用 時(shí)MyClass仍會(huì)獲得值。NaNgetValue()


查看完整回答
反對(duì) 回復(fù) 2023-03-02
  • 1 回答
  • 0 關(guān)注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)