我正在尝试拦截在我的控制器中返回的对象,以便在 Spring 调用 Jackson 的序列化过程之前创建响应的平面 JSON 结构。
我将支持一个查询参数,该参数允许客户端扁平化响应正文。类似的东西:
/v1/rest/employees/{employeId}/id?flat=true
控制器方法类似于:
public Employee getEmployee(...) {}
我希望避免在每次服务调用中都实现这种扁平化逻辑,并继续返回 Employee
对象。
Spring 中是否有某种工具可以让我 A) 读取查询字符串和 B) 拦截作为响应正文返回的对象?
这是一个想法。可能有更好的方法,但这会奏效:
定义一个额外的请求映射来进行平面映射:
int main (void)
{
//...
display (L.head);
“flatMapper”实现可以是你喜欢的任何东西,只要它有效。 一种选择是先使用 Jackson 的 ObjectMapper 将值写入 json,然后使用 https://github.com/wnameless/json-flattener 将其展平为您想要的输出。也可能有一种方法来定义一个自定义的 ObjectMapper 来进行平面映射,尽管这需要您做更多的工作。