无论是上传和返回json,都跟HttpMessageConverter 这个类有关,是一个消息转换工具
有两个方面的功能:
1、将服务端返回的对象序列化成JSON字符串
2、将前端传来的JSON字符串反序列化Java对象
所有的JSON生成都离不开相关的HttpMessageConverter
SpringMVC自动配置了Jackson和Gson的HttpMessageConverter,SpringBoot中也对此做了自动化配置,所以用户使用Jackson和Gson的话,没有其他额外配置,则只需要添加依赖即可。
json配置类位置:org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration
gson配置类位置:org.springframework.boot.autoconfigure.http.GsonHttpMessageConvertersConfiguration
以下两种方式接口会返回json数据:
1 在controller层的类上加@RestController。里面的方法返回的都是json格式的数据。
2 在方法上加@ResponseBody
如果我们想对日期进行格式化,最简单的就是在实体类的日期类型属性上加一个@JsonFormat(pattern=“yyyy-MM-dd”)
这种配置当实体类变多的时候,其实是很麻烦的,咱们可以进行全局配置
创建其配置类:
package com.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import java.text.SimpleDateFormat;
/**
* @author juge
* @version 1.0
* @date 2020/5/30 20:42
*/
@Configuration
public class WebMvcConfig {
@Bean
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper om = new ObjectMapper();
om.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));
converter.setObjectMapper(om);
return converter;
}
}
其实真正起作用的是ObjectMapper对象,所以还有一种方式:
package com.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import java.text.SimpleDateFormat;
/**
* @author juge
* @version 1.0
* @date 2020/5/30 20:42
*/
@Configuration
public class WebMvcConfig {
@Bean
ObjectMapper objectMapper(){
ObjectMapper om = new ObjectMapper();
om.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));
return om;
}
}