我有一个豆子
class CustomResponse<Type> {
String f1;
String f2;
List<Type> rows;
}
类型可以是其中包含Map的自定义bean。在这种情况下,我要确保不在该映射内打印空值。
例如:我的CustomResponse对象可以是new CustomResponse<Row>();
Row
在哪里,
class Row {
Map<String, Object> keyValues;
}
我正在使用Jackson 2.5并使用ObjectMapper之类的
ObjectMapper mapper = new ObjectMapper();
if (skipNullFields) {
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
}
现在,如果我写mapper.writeValueAsString(customResponseObj);
,则在最终响应中,我会在“行列表”变量rows
中看到空值。同时,如果我写mapper.writeValueAsString(((Row)rows.get(0)).keyValues);
,我在最终的Json响应中看不到空值-因为我直接在此处传递Map而不是将其嵌套在另一个bean中。
您能帮助我确保即使以mapper.writeValueAsString(customResponseObj);
书写时也看不到空值吗?
注意:
我知道这个问题与this post非常相似。但是在那篇文章中,似乎没有处理将Map嵌套在bean中的问题。
我正在为每个线程使用新的ObjectMapper实例。因此,我不会在线程间共享单个ObjectMapper实例,而这会引起任何线程安全问题。