Spring Boot使用FastJson解析JSON数据
2018-03-01 17:38
471 查看
阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;
功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省。
下面就演示如何在Spring boot中使用FastJson:
先在pom.xml中导入依赖<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
配置方法有两种,第一种我比较常用的:
在spring配置类中注入Bean : HttpMessageConverters
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters(){
//1、需要先定义一个convert转换消息的对象
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2、添加fastJson的配置信息,比如:是否格式化返回的json数据
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//A、处理中文乱码问题
List<MediaType> fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
fastConverter.setSupportedMediaTypes(fastMediaTypes);
//3、在convert中添加配置信息
fastConverter.setFastJsonConfig(fastJsonConfig);
//4、返回
HttpMessageConverter<?> converter = fastConverter;
return new HttpMessageConverters(converter);
}第二种配置方法:
首先需要Spring boot启动类继承WebMvcConfi
a0fe
gurerAdapter
然后覆盖父类方法configureMessageConverters@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(
SerializerFeature.PrettyFormat
);
//A、处理中文乱码问题
List<MediaType> fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
fastConverter.setSupportedMediaTypes(fastMediaTypes);
fastConverter.setFastJsonConfig(fastJsonConfig);
converters.add(fastConverter);
}到此FastJson就配置完成了。
测试一下效果:
首先建一个实体类public class User {
private int id;
private String name;
//返回的fastjson指定的格式
@JSONField(format="yyyy-MM-dd HH:mm")
private Date createTime;
private String remark;
//序列化时不包含该字段 json不返回remark
@JSONField(serialize=false)
public String getRemark() {
return remark;
}
//此处省略getter setter
}
然后在Controller中写一个测试方法:@RequestMapping("getUser")
@ResponseBody
public User getUser(){
User user = new User();
user.setId(1);
user.setName("张三");//如果不添加第A步,会出现中文乱码
user.setCreateTime(new Date());
user.setRemark("这是一个备注");
return user;
}注意必须要上@ResponseBody@ResponseBody注解的作用是将controller的方法返回的对象通过转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据
在使用此注解之后不会再走springmvc的视图解析器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据
最后访问一下:http://127.0.0.1:8080/getUser
@JSONField还有其他的用法:
fastjson默认的序列化规则是当你的字段的值为null的时候,它是不会给你序列化这个字段的,即如果name为null的时候,得到的json中不会出现name这个属性。
这时候可以这样@JSONField(serialzeFeatures=SerializerFeature.WriteMapNullValue)
private String name;结果
速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;
功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省。
下面就演示如何在Spring boot中使用FastJson:
先在pom.xml中导入依赖<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
配置方法有两种,第一种我比较常用的:
在spring配置类中注入Bean : HttpMessageConverters
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters(){
//1、需要先定义一个convert转换消息的对象
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2、添加fastJson的配置信息,比如:是否格式化返回的json数据
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//A、处理中文乱码问题
List<MediaType> fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
fastConverter.setSupportedMediaTypes(fastMediaTypes);
//3、在convert中添加配置信息
fastConverter.setFastJsonConfig(fastJsonConfig);
//4、返回
HttpMessageConverter<?> converter = fastConverter;
return new HttpMessageConverters(converter);
}第二种配置方法:
首先需要Spring boot启动类继承WebMvcConfi
a0fe
gurerAdapter
然后覆盖父类方法configureMessageConverters@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(
SerializerFeature.PrettyFormat
);
//A、处理中文乱码问题
List<MediaType> fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
fastConverter.setSupportedMediaTypes(fastMediaTypes);
fastConverter.setFastJsonConfig(fastJsonConfig);
converters.add(fastConverter);
}到此FastJson就配置完成了。
测试一下效果:
首先建一个实体类public class User {
private int id;
private String name;
//返回的fastjson指定的格式
@JSONField(format="yyyy-MM-dd HH:mm")
private Date createTime;
private String remark;
//序列化时不包含该字段 json不返回remark
@JSONField(serialize=false)
public String getRemark() {
return remark;
}
//此处省略getter setter
}
然后在Controller中写一个测试方法:@RequestMapping("getUser")
@ResponseBody
public User getUser(){
User user = new User();
user.setId(1);
user.setName("张三");//如果不添加第A步,会出现中文乱码
user.setCreateTime(new Date());
user.setRemark("这是一个备注");
return user;
}注意必须要上@ResponseBody@ResponseBody注解的作用是将controller的方法返回的对象通过转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据
在使用此注解之后不会再走springmvc的视图解析器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据
最后访问一下:http://127.0.0.1:8080/getUser
@JSONField还有其他的用法:
/**bean 转json 时会把bean中的id转换为user_id */ @JSONField(name="user_id") public int getId() { return id; } /**json 转bean 时会把json中的user_id值赋值给id*/ @JSONField(name="user_id") public void setId(int id) { this.id = id; }
fastjson默认的序列化规则是当你的字段的值为null的时候,它是不会给你序列化这个字段的,即如果name为null的时候,得到的json中不会出现name这个属性。
这时候可以这样@JSONField(serialzeFeatures=SerializerFeature.WriteMapNullValue)
private String name;结果
相关文章推荐
- spring boot (二):使用fastJson解析json数据
- Android中Json数据解析(二)--使用Gson、Jackson和FastJson解析Json数据
- 78. Spring Boot完美使用FastJson解析JSON数据【从零开始学Spring Boot】
- 如何使用fastJson来解析JSON格式数据和生成JSON格式数据
- 使用fastjson解析json数据
- 使用FastJson解析Json数据
- Andorid中使用Gson和Fast-json解析库解析JSON数据---第三方库学习笔记(二)
- Android商城开发系列(六)——使用 OkHttpUtils 请求网络 + 使用 fastjson解析数据
- 78. Spring Boot完美使用FastJson解析JSON数据【从零开始学Spring Boot】
- java使用FastJson解析Json数据
- JSON数据之使用Fastjson进行解析(一)
- 使用FastJson解析Json数据
- 使用fastjson解析较为复杂的json数据。
- JSON数据之使用Fastjson进行解析(一)
- 安卓使用FastJson解析Json数据并展示到ListView中
- Android中Json数据解析(二)--使用Gson、Jackson和FastJson解析Json数据
- Android开发中使用fastJSON将json格式的数据快速解析生成实体类并附上实体类生成器
- 如何使用fastJson来解析JSON格式数据和生成JSON格式数据
- (4)Spring Boot完美使用FastJson解析JSON数据【从零开始学Spring Boot】
- 使用FastJson解析Json数据