Java Spring hateoas jaxrslinkbuilder添加空字段

Java Spring hateoas jaxrslinkbuilder添加空字段,java,spring,rest,spring-boot,jax-rs,Java,Spring,Rest,Spring Boot,Jax Rs,我正在尝试将HATEOAS链接添加到我的控制器结果。 链接创建: Link link = JaxRsLinkBuilder.linkTo(MainRestService.class) .slash(this::getVersion) .slash(LinkMappingConstants.TAXPAYERS) .slash(taxPayerId)

我正在尝试将HATEOAS链接添加到我的控制器结果。 链接创建:

       Link link = JaxRsLinkBuilder.linkTo(MainRestService.class)
                    .slash(this::getVersion)
                    .slash(LinkMappingConstants.TAXPAYERS)
                    .slash(taxPayerId)
                    .slash(LinkMappingConstants.ESTIMATIONS)
                    .slash(estimationId)
                    .withSelfRel();
链接本身创建得很好,但结果JSON中有多余的条目:

"links": [
        {
          "rel": "self",
          "href": "http://localhost:8080/blablabla",
          "hreflang": null,
          "media": null,
          "title": null,
          "type": null,
          "deprecation": null,
          "template": {
            "variables": [

            ],
            "variableNames": [

            ]
          }
        }
      ]
我怎样才能得到这种格式?(不使用属性
spring.jackson.default属性inclusion=NON_NULL


谢谢。

正如您所提到的,如果您想在整个JSON上包含
非空属性,而不仅仅是
链接,您可以使用
spring.jackson.default property inclusion=NON\u NULL
。但是,这不会修复空模板字段

如果您希望仅在使用Jackson进行序列化的
链接
对象上包含
NON\u NULL
属性,您可以通过使用带有
@JsonInclude(Include.NON\u NULL)
注释的
链接
对象的

例如:

@JsonInclude(Include.NON_NULL)
abstract class LinkMixIn {
}
要隐藏模板字段,如果不希望序列化模板节,可以添加@JsonIgnore,或者在上面的回答中尝试
NON\u DEFAULT
属性包含,这将创建对象的新实例并将其与要序列化的对象进行比较,以确定是否应包含它

例如,下面这样的内容根本不会序列化getTemplate的结果

@JsonInclude(Include.NON_NULL)
abstract class LinkMixIn {
    @JsonIgnore abstract Template getTemplate();
}

无论如何,此属性字段“template”将保留。@kros365是这样-需要额外的MixIn自定义(非默认或忽略),我将更新我的答案以反映它。我使用org.springframework.hateoas.ResourceSupport和jaxrlinkbuilder创建链接。创建自定义链接不是问题,只是我认为有一种方法可以配置此解决方案。@kros365上面的答案应该包括自定义序列化以满足您的要求,可以使用
JsonIgnore
完全忽略属性,也可以仅在属性为null时隐藏属性。如果有什么不清楚,请告诉我。
mapper.addMixIn(Link.class, LinkMixIn.class);
@JsonInclude(Include.NON_NULL)
abstract class LinkMixIn {
    @JsonIgnore abstract Template getTemplate();
}