[英]Serialize empty List by ignoring null element/property in fasterXml Jackson java
When I am trying to serialize a class, Jackson giving empty list as list with one empty element. 当我尝试序列化一个类时,Jackson将空列表作为带有一个空元素的列表给出。
....
@JacksonXmlElementWrapper(localName = "users")
@JacksonXmlProperty(localName = "user")
private List<User> users;
....
Xml Output: Xml输出:
<response>
<users>
<user/>
</users>
</response>
Json Output: Json输出:
{
"users": null
}
But I think, I should get empty list as below (without empty user element inside users): 但是我认为,我应该得到如下的空列表(用户内部没有空的用户元素):
<response>
<users/>
</response>
How to fix this ? 如何解决呢?
Just returning empty list from getUsers()
gives desired result. 只需从getUsers()
返回空列表即可得到所需的结果。
@JacksonXmlRootElement(localName = "response")
public class Response {
@JacksonXmlElementWrapper(localName = "users")
@JacksonXmlProperty(localName = "user")
private List<User> users;
public List<User> getUsers() {
if(null == users) {
return Collections.emptyList();
}
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
}
Main Method 主要方法
ObjectMapper mapper = new XmlMapper();
Response response = new Response();
String s = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(response);
System.out.println(s);
response.setUsers(Arrays.asList(new User("1", "Hemant")));
s = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(response);
System.out.println(s);
Output 输出量
<response>
<users/>
</response>
<response>
<users>
<user>
<id>1</id>
<name>Hemant</name>
</user>
</users>
</response>
One more thing, when getUsers()
is unchanged 还有一件事,当getUsers()
不变时
public List<User> getUsers() {
/*if(null == users) {
return Collections.emptyList();
}*/
return users;
}
Output is 输出是
<response/>
If you use the same model for Hibernate/DB
and Jackson/XML
you need to load appropriate Hibernate module to properly serialize persisted collections. 如果您对Hibernate/DB
和Jackson/XML
使用相同的模型,则需要加载适当的Hibernate模块以正确地序列化持久化的集合。 For more information see jackson-datatype-hibernate . 有关更多信息,请参见jackson-datatype-hibernate 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.