SpringBoot 返回前端的json数据,是在哪里进行序列化的

Planeswalker23
  • 299

比如我使用jackson来进行序列化,在application.yml中添加了相关配置

spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    default-property-inclusion: NON_NULL

然后有一个接口返回的是json格式的数据。

@RestController
public class StatsController {

    @Resource
    private ObjectMapper objectMapper;

    @GetMapping("/test")
    public TestDTO test() {
        return objectMapper.writeValueAsString(new TestDTO("test", null));
    }

}

@Data
class TestDTO {
    private String a;
    private Integer b;
    public TestDTO(String a, Integer b){
        this.a = a;
        this.b = b
    }
}

然后在浏览器中进行该接口的调用,返回的应该是:

{"a":"test"}

我想知道Spring是在哪个类中对返回给前端的数据(objectMapper.writeValueAsString(new TestDTO("test", null)))进行jackson配置的序列化规则的处理?

回复
阅读 891
2 个回答

RequestMappingHandlerAdapter -> RequestResponseBodyMethodProcessor -> MappingJackson2HttpMessageConverter

直接返回对象即可,不需要自己序列化
spring-boot配置的ObjectMapper会被注入到MappingJackson2HttpMessageConverter里做序列化

你知道吗?

宣传栏