Java Don';是否在JAXB中输出空列表(对象到字符串)?
我有一个可能包含空列表的对象。如果列表为空,我不希望看到标记出现在我的XML的Java Don';是否在JAXB中输出空列表(对象到字符串)?,java,jaxb,Java,Jaxb,我有一个可能包含空列表的对象。如果列表为空,我不希望看到标记出现在我的XML的字符串输出中。 但是,JAXB仍在输出空标记 类中的My字段RemoteEdition.java: @XmlElementWrapper(name = "dealings") @XmlElement(name = "dealing") private List<Dealing> dealings; 实际产量: <remoteEdition> <dealings/> <
字符串
输出中。
但是,JAXB仍在输出空标记
类中的My字段RemoteEdition.java
:
@XmlElementWrapper(name = "dealings")
@XmlElement(name = "dealing")
private List<Dealing> dealings;
实际产量:
<remoteEdition>
<dealings/>
</remoteEdition>
在Jackson中,我将使用以下注释元素:
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<Dealing> dealings;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
私人上市交易;
JAXB中是否有一个等价物?我在网上找不到任何例子。。。
另外,我已经试过了,但是没有用。
实现这一点的一个选择是利用
beforemashall
方法。此空元素仅在列表为空但不为空时创建
因此,如果列表为空,则可以在beforemashall
方法中将字段设置为null
以下是一个独立的示例:
@XmlRootElement
class Root {
@XmlElementWrapper(name = "wrapper")
@XmlElement
private List<Element> element;
void beforeMarshal(Marshaller u) {
if (element != null && element.isEmpty()) {
element = null;
}
}
}
class Element {
}
public static void main(String[] args) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(Root.class);
StringWriter writer = new StringWriter();
Root jaxbElement = new Root();
jaxbElement.element = new ArrayList<JaxbNullElementWrapper.Element>();
context.createMarshaller().marshal(jaxbElement, writer);
System.out.println(writer.toString());
}
@XmlRootElement
类根{
@xmlementwrapper(name=“wrapper”)
@XmlElement
私有列表元素;
元帅前无效(元帅u){
if(element!=null&&element.isEmpty()){
元素=空;
}
}
}
类元素{
}
公共静态void main(字符串[]args)抛出JAXBEException{
JAXBContext context=JAXBContext.newInstance(Root.class);
StringWriter编写器=新的StringWriter();
根jaxbElement=新根();
jaxbElement.element=newArrayList();
context.createMarshaller().marshal(jaxbElement,writer);
System.out.println(writer.toString());
}
输出:
@XmlRootElement
class Root {
@XmlElementWrapper(name = "wrapper")
@XmlElement
private List<Element> element;
void beforeMarshal(Marshaller u) {
if (element != null && element.isEmpty()) {
element = null;
}
}
}
class Element {
}
public static void main(String[] args) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(Root.class);
StringWriter writer = new StringWriter();
Root jaxbElement = new Root();
jaxbElement.element = new ArrayList<JaxbNullElementWrapper.Element>();
context.createMarshaller().marshal(jaxbElement, writer);
System.out.println(writer.toString());
}