这是一个几乎很难遇到的问题。
首先需要是一个已有的项目,增加HATEOAS,或者改为HATEOAS 这种规范来返回结果。
特别巧合的是有一个自己的通用Result对象,而且这个对象的一个属性用来放具体返回内容的属性叫做 contrent。
因为如果想返回下图这样格式的返回结果:

需要返回结果对象就需要继承HATEOAS 提供的一个基类 org.springframework.hateoas.Resource;
但是如果继承了这个类,返回的json就不会现在contren,content里的对象属性会直接显示到整个json的第一级。
可能这么说不太形象,但是如果你真的遇到这个问题,就会明白。
拿具体的例子来说吧,

我想要如上图的效果,但是HATEOAS会默认把content这一级给忽略了。json里直接就是content的属性。
解决办法:
直接下载 org.springframework.hateoas.Resource; 的源码本地编译。重点是把
@JsonUnwrapped 这个注解注释掉
/**
* Returns the underlying entity.
*
* @return the content
*/
//@JsonUnwrapped
@XmlAnyElement
public T getContent() {
return content;
}
问题就解决了。

博客讲述在已有项目中增加或改用HATEOAS规范返回结果时遇到的问题。当通用Result对象的content属性存放具体返回内容,继承HATEOAS提供的基类后,返回的json会忽略content层级。解决办法是下载该基类源码本地编译。
2万+

被折叠的 条评论
为什么被折叠?



