Java Jackson/Spring中响应主体的自定义处理程序
我试图截取在我的控制器中返回的对象,以便在Spring调用Jackson的序列化过程之前创建响应的平面JSON结构 我将支持一个查询参数,该参数允许客户端将响应体展平。比如:Java Jackson/Spring中响应主体的自定义处理程序,java,spring,spring-boot,jackson,Java,Spring,Spring Boot,Jackson,我试图截取在我的控制器中返回的对象,以便在Spring调用Jackson的序列化过程之前创建响应的平面JSON结构 我将支持一个查询参数,该参数允许客户端将响应体展平。比如: /v1/rest/employees/{employeId}/id?flat=true public Employee getEmployee(...) {} 控制器方法类似于: /v1/rest/employees/{employeId}/id?flat=true public Employee getEmploy
/v1/rest/employees/{employeId}/id?flat=true
public Employee getEmployee(...) {}
控制器方法类似于:
/v1/rest/employees/{employeId}/id?flat=true
public Employee getEmployee(...) {}
我希望避免在每次服务调用中实现这种扁平化逻辑,并继续返回Employee
对象
Spring中是否有某种工具允许我A)读取查询字符串,B)截取作为响应主体返回的对象?这里有一个想法。也许有更好的方法,但这会奏效: 定义额外的请求映射以执行平面映射:
@RequestMapping(path = "/endpoint", params = {"flat"})
public String getFlatThing() {
return flatMapper.writeValueAsString(getThing());
}
// The Jackson converter will do its ordinary serialization here.
@RequestMapping(path = "/endpoint")
public Thing getFlatThing() {
return new Thing();
}
“flatMapper”实现可以是任何你喜欢的东西,只要它能工作。
一个选项是使用Jackson的ObjectMapper首先将值写入json,然后使用它将其展平到所需的输出。也可能有一种方法可以定义一个定制的ObjectMapper来进行平面映射,不过这需要您做更多的工作。我认为这是唯一一种不需要拼凑解决方案的方法。我找到了一个JSON,然后将以与上面提到的类似的方式调用它。