3 回答
TA贡献1785条经验 获得超8个赞
我无法添加评论以包含我的建议。所以,在这里提一下:参考这个:Embed object instead of collection in Spring HATEOAS
TA贡献1836条经验 获得超4个赞
链接应序列化为地图,而不是列表。您可以自己将其转换为地图,也可以为此使用自定义序列化器/反序列化器。幸运的是 Spring 已经有了它们:
@Override
@JsonProperty("_links")
@JsonInclude(Include.NON_EMPTY)
@JsonSerialize(using = Jackson2HalModule.HalLinkListSerializer.class)
@JsonDeserialize(using = Jackson2HalModule.HalLinkListDeserializer.class)
public List<Link> getLinks() {
return super.getLinks();
}
- - 编辑
为了使其工作,您将需要halJacksonHttpMessageConverter消息转换器列表中的 bean。创建一个WebMvcConfigurer并将其添加halJacksonHttpMessageConverter到方法中的转换器extendMessageConverters。
@Autowired
private HttpMessageConverter halJacksonHttpMessageConverter;
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(halJacksonHttpMessageConverter);
}
您应该将其添加到列表的前面,或jacksonHttpMessageConverter从列表中删除原始文件。
TA贡献1873条经验 获得超9个赞
发生这种情况是因为您在代码中使用了 List 。
@Override
@JsonProperty("_links")
@JsonInclude(JsonInclude.Include.NON_NULL)
public List<Link> getLinks() {
return super.getLinks();
}
您应该使用链接对象而不是链接列表。
添加回答
举报