Java Jackson/Spring中响应主体的自定义处理程序

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

我试图截取在我的控制器中返回的对象,以便在Spring调用Jackson的序列化过程之前创建响应的平面JSON结构

我将支持一个查询参数,该参数允许客户端将响应体展平。比如:

/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,然后将以与上面提到的类似的方式调用它。