我有一个ObjectMapper的spring bean,它有一个配置:mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
我有一个类,里面有一个map:
@Getter
@Setter
@ToString
@EqualsAndHashCode
@NoArgsConstructor
@AllArgsConstructor
public class MyClass {
private Map<String, Object> value = new HashMap<>();
}
Map看起来像:
{
"value" : {
"a": null,
"b": "notnull",
"c" : [ {
"c1" : null
}, {
"c2" : "abc"
} ]
}
}
当我调用rest endpoint时,响应看起来像:
"value": {
"b": "notnull",
"c": [
{},
{
"c2": "abc"
}
]
}
}
我试着更新我的类的配置:
JsonInclude.Include nonDefaultInclude = JsonInclude.Include.ALWAYS;
JsonInclude.Value includeValue = JsonInclude.Value.construct(nonDefaultInclude, nonDefaultInclude);
mapper.configOverride(MyClass.class).setIncludeAsProperty(includeValue);
但它不起作用,不管它是否起作用,如果我做这样的事情:
JsonInclude.Include nonDefaultInclude = JsonInclude.Include.ALWAYS;
JsonInclude.Value includeValue = JsonInclude.Value.construct(nonDefaultInclude, nonDefaultInclude);
mapper.configOverride(Map.class).setIncludeAsProperty(includeValue);
我还尝试使用第一种方法,并把@JsonInclude放在里面的Map上-没有运气
如果我将使用第二种方法,那么我将覆盖项目中的所有Map-没有办法做到这一点。
有什么方法可以达到我的目标吗?
1条答案
按热度按时间7z5jn7bk1#
您可以从
application.properties
文件控制JacksonObjectMapper行为。要始终包含字段,而不管其值如何,请设置以下配置值:编辑:自定义Jackson对象Map器