簡體   English   中英

使用JAXB問題對布爾值進行編組

[英]Marshalling of boolean values using JAXB issue

我在java類中有一個布爾屬性private boolean isCurrent; 現在在xml中將其編組為<current>false</current> 現在我所擁有的領域只是isCurrent 如何保留XML中的isCurrent名稱? 盡管我知道它與布爾型的getter和setter無關,只是為了提供信息,但它們使用eclipse IDE的默認設置命名為setCurrent和isCurrent。

空標記的存在可以映射為布爾值。 例如, <isPresent/>使用XmlAdaptor:

package com.example.xml.adaptor;
import javax.xml.bind.annotation.adapters.XmlAdapter;

public class BooleanToEmptyObjectAdapter extends XmlAdapter<EmptyObject, Boolean> {
    @Override
    public EmptyObject marshal(final Boolean v) {
        return v != null && v ? new EmptyObject() : null;
    }

    @Override
    public Boolean unmarshal(final EmptyObject v) {
        return true;
    }
}

還有一個虛擬對象要序列化:

package com.example.xml.adaptor;

public class EmptyObject {
    // EMPTY
}

然后在您的對象中,使用布爾值(而非布爾值)字段:

@XmlRootElement(name = "FooElement")
public class Foo {

    @XmlElement()
    @XmlJavaTypeAdapter(BooleanToEmptyObjectAdapter.class)
    private final Boolean isPresent = false;

    ...        
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM