JAXB将空列表映射到空集合?

mem*_*und 6 java soap web-services jax-ws jaxb

我有一个webservice soap服务,它将带有可选列表的对象作为xml参数:

@XmlElement(required = false)
private List<String> list;

public List<String> getList() { return list; }
Run Code Online (Sandbox Code Playgroud)

null如果客户端没有提供list标签,是否可以告诉JAXB始终返回/使用空集合而不是列表?

或者我是否总是必须在服务器端定义一个懒惰的getter以获取永远不会为null的列表(我更喜欢这种情况)?

public List<String> getList() {
    if (list == null) {
        list = new ArrayList<String>();
    }
    return list;
}
Run Code Online (Sandbox Code Playgroud)

bdo*_*han 10

如果您希望XML中没有集合对应List于Java对象中的空,您只需执行以下操作即可.

@XmlElement(required = false)
private List<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

这将像场一样编组null.使用注释时,编组null和清空的方式只有区别.List@XmlElementWrapper