SpringBoot——json数据处理
使用默认的json解析工具jackson
Spring-boot应用程序提供了默认的json转换器,为Jackson。
pom.xml中dependency配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
-
创建实体类User
public class User implements Serializable{ private String name; private int age; private Date createTime; .... }
-
创建controller
@RestController public class HelloController { /** * Spring boot 默认json解析框架是Jackson * @return */ @RequestMapping("/getUser") public User getUser() { User u = new User(); u.setName("张三"); u.setAge(33); u.setCreateTime(new Date()); return u; } }
-
启动类
@SpringBootApplication public class MainApp{ public static void main(String[] args) { SpringApplication.run(MainApp.class, args); } }
启动MainApp:访问http://localhost:8080/getUser,结果如下:
{``"name"``:``"张三"``,``"age"``:33,``"createTime"``:``"2018-04-04T03:03:08.534+0000"``}
在这里能够正常将Bean转换为json数据,说明springboot对json进行了默认实现,使用的是默认的jackjson转换器。
使用 fastjson
pom添加依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
修改User类:
public class User implements Serializable{
private String name;
private int age;
@JSONField(format="yyyy-MM-dd HH:mm")
private Date createTime;
...
}
- 实现fastjson自定义json转换的第一种方式,Spring-Boot实现WebMvcConventer接口:
修改MainApp:
@SpringBootApplication
public class MainApp implements WebMvcConfigurer{
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
WebMvcConfigurer.super.configureMessageConverters(converters);
//创建fastjson转换器实例
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
//配置对象
FastJsonConfig config = new FastJsonConfig();
List<MediaType> mediaTypes = new ArrayList<>();
//中文编码
MediaType mediaType = MediaType.APPLICATION_JSON_UTF8;
mediaTypes.add(mediaType);
config.setSerializerFeatures(SerializerFeature.PrettyFormat);
converter.setSupportedMediaTypes(mediaTypes);
converter.setFastJsonConfig(config);
converters.add(converter);
}
public static void main(String[] args) {
SpringApplication.run(MainApp.class, args);
}
}
启动程序:访问上面的路径:
{
"age":33,
"createTime":"2018-04-04 11:14",
"name":"张三"
}
- 使用@Bean注解注入fastjson转换器:修改MainApp如下:
@SpringBootApplication
public class MainApp{
@Bean
public HttpMessageConverters fastJsonHttpMessageConventers() {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
FastJsonConfig config = new FastJsonConfig();
config.setSerializerFeatures(SerializerFeature.PrettyFormat);
List<MediaType> mediaTypes = new ArrayList<>();
mediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
converter.setSupportedMediaTypes(mediaTypes);
return new HttpMessageConverters(converter);
}
public static void main(String[] args) {
SpringApplication.run(MainApp.class, args);
}
}