有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

/v1/rest/employees/{employeId}/id?flat=true

控制器方法类似于:

public Employee getEmployee(...) {}

我希望避免在每次服务调用中实现这种扁平化逻辑,并继续返回Employee对象

Spring中是否有某种工具允许我A)读取查询字符串,B)截取作为响应体返回的对象


共 (1) 个答案

  1. # 1 楼答案

    这里有一个想法。也许有更好的方法,但这会奏效:

    定义一个额外的请求映射来执行平面映射:

    @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,然后使用https://github.com/wnameless/json-flattener将其展平到所需的输出。还有一种方法可以定义一个定制的ObjectMapper来进行平面映射,不过这需要您做更多的工作