如何在JSON REST响应中删除空参数?

6
我正在使用Spring创建一个REST服务,并希望提供JSON响应:
@RequestMapping(value = "/test",
        method = RequestMethod.GET,
        produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public MyResponse content() {
    return rsp;
}

MyResponse 可能包含 null 值,这些值不应在 JSON 响应中返回(应将这些参数删除)。

@XmlRootElement
class MyResponse {
}

“那是可能的吗?”

你使用哪个JSON映射器? - Uwe Allner
我不知道。我只是使用spring-boot和@RestController注释。 - membersound
1
Jackson 是 Spring 的默认 JSON 映射器。 - Leland B
2个回答

19

试试这个:

@JsonInclude(JsonInclude.Include.NON_NULL)
class MyResponse {
...
}

您需要更新您的依赖项并导入此内容:

import com.fasterxml.jackson.annotation.JsonInclude;

6

全局删除 null 属性。

spring.jackson.default-property-inclusion = non_null

这是一个非常巧妙的技巧,确实很优雅和方便,因为我几乎总是使用 @JsonInclude(JsonInclude.Include.NON_NULL) 注释我的 DTO。谢谢! - Christophe Schutz
我不确定为什么这没有被标记为答案。它简单直接,但确实有效。 - Paul Davies
这真的很优雅。但我认为它只能在最新的spring-boot版本2.5.0上运行。 - Atul Panda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接