JavaSpringHateoasJaxrsLinkBuilder添加了空字段
我正在尝试将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-property-inclusion=NON_NULL
)
"links": [
{
"rel": "self",
"href": "http://localhost:8080/blablabla"
}
]
谢谢
# 1 楼答案
正如你所提到的,如果你想在整个JSON上包含
NON_NULL
属性,而不仅仅是links
,你可以使用spring.jackson.default-property-inclusion=NON_NULL
。但是,这不会修复空模板字段如果你想在使用Jackson进行序列化的
NON_NULL
对象上包含Link
属性,你可以通过使用Jackson MixIn作为带有@JsonInclude(Include.NON_NULL)
注释的Link
对象来实现例如:
要隐藏模板字段,如果永远不想序列化模板节,可以添加@JsonIgnore,或者在上面的答案上尝试
NON_DEFAULT
属性包含,这将创建对象的新实例,并将其与要序列化的对象进行比较,以确定是否应该包含它例如,下面这样的内容根本不会序列化getTemplate的结果