[英]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.