Spring Boot fastJSON的使用

springBoot,默认使用的json解析框架是Jackson。

Spring Boot fastJSON的使用

虽然jackson能够满足json的解析,如果想使用熟悉的alibaba的fastjon,我们只需要在pom文件中配置maven依赖就好。

版本可根据自己需要查询,网址:​​​http://mvnrepository.com/​​​Maven依赖完成之后,我们可以通过两种方式配置fastjon
方法一:启动类继承extends WebMvcConfigurerAdapter,且覆盖configureMessageConverters。
方法二:在启动类中,注入Bean:HttpMessageConverters。

代码如下:
package org.lzm.springbootnew;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import java.util.ArrayList;
import java.util.List;

​@EnableScheduling​​​ //定时任务
​​​@SpringBootApplication​​public class SpringbootNewApplication extends WebMvcConfigurerAdapter {

  1. ​public static void main(String[] args) {​
  2. ​ SpringApplication.run(SpringbootNewApplication.class, args);​
  3. ​}​
  4. ​ /*​
  5. ​ * // 方法一:extends WebMvcConfigurerAdapter​
  6. ​ */​
  7. ​@Override​
  8. &#x200B;public void configureMessageConverters(List<httpmessageconverter<?>> converters) {&#x200B;</httpmessageconverter<?>
  9. &#x200B; super.configureMessageConverters(converters);&#x200B;
  10. &#x200B; //1&#x3001;&#x5148;&#x5B9A;&#x4E49;&#x4E00;&#x4E2A;convert&#x8F6C;&#x6362;&#x6D88;&#x606F;&#x7684;&#x5BF9;&#x8C61;&#x200B;
  11. &#x200B; FastJsonHttpMessageConverter fastConverter=new FastJsonHttpMessageConverter();&#x200B;
  12. &#x200B; //2&#x3001;&#x6DFB;&#x52A0;fastjson&#x7684;&#x914D;&#x7F6E;&#x4FE1;&#x606F;&#xFF0C;&#x6BD4;&#x5982;&#x662F;&#x5426;&#x8981;&#x683C;&#x5F0F;&#x5316;&#x8FD4;&#x56DE;&#x7684;json&#x6570;&#x636E;&#xFF1B;&#x200B;
  13. &#x200B; FastJsonConfig fastJsonConfig=new FastJsonConfig();&#x200B;
  14. &#x200B; fastJsonConfig.setSerializerFeatures(&#x200B;
  15. &#x200B; //&#x662F;&#x5426;&#x9700;&#x8981;&#x683C;&#x5F0F;&#x5316;&#x200B;
  16. &#x200B; SerializerFeature.PrettyFormat&#x200B;
  17. &#x200B; );&#x200B;
  18. &#x200B; //&#x9644;&#x52A0;&#xFF1A;&#x5904;&#x7406;&#x4E2D;&#x6587;&#x4E71;&#x7801;&#xFF08;&#x540E;&#x671F;&#x6DFB;&#x52A0;&#xFF09;&#x200B;
  19. &#x200B; List<mediatype> mediaTypeList=new ArrayList<mediatype>();&#x200B;</mediatype></mediatype>
  20. &#x200B; mediaTypeList.add(MediaType.APPLICATION_JSON_UTF8);&#x200B;
  21. &#x200B; fastConverter.setSupportedMediaTypes(mediaTypeList);&#x200B;
  22. &#x200B; //3&#x3001;&#x5728;convert&#x4E2D;&#x6DFB;&#x52A0;&#x914D;&#x7F6E;&#x4FE1;&#x606F;&#x200B;
  23. &#x200B; fastConverter.setFastJsonConfig(fastJsonConfig);&#x200B;
  24. &#x200B; //4&#x3001;&#x5C06;convert&#x6DFB;&#x52A0;&#x5230;converters&#x200B;
  25. &#x200B; converters.add(fastConverter);&#x200B;
  26. &#x200B;}&#x200B;
  27. &#x200B;/*&#x200B;
  28. &#x200B; * &#x65B9;&#x6CD5;&#x4E8C;&#xFF1A;&#x5728;&#x542F;&#x52A8;&#x7C7B;&#x4E2D;&#xFF0C;&#x6CE8;&#x5165;Bean&#xFF1A;HttpMessageConverters&#x200B;
  29. &#x200B; */&#x200B;
  30. &#x200B;@Bean&#x200B;
  31. &#x200B;public HttpMessageConverters fastJsonHttpMessageConverters(){&#x200B;
  32. &#x200B; //1&#x3001;&#x5148;&#x5B9A;&#x4E49;&#x4E00;&#x4E2A;convert&#x8F6C;&#x6362;&#x6D88;&#x606F;&#x7684;&#x5BF9;&#x8C61;&#x200B;
  33. &#x200B; FastJsonHttpMessageConverter fastConverter=new FastJsonHttpMessageConverter();&#x200B;
  34. &#x200B; //2&#x3001;&#x6DFB;&#x52A0;fastjson&#x7684;&#x914D;&#x7F6E;&#x4FE1;&#x606F;&#xFF0C;&#x6BD4;&#x5982;&#x662F;&#x5426;&#x8981;&#x683C;&#x5F0F;&#x5316;&#x8FD4;&#x56DE;&#x7684;json&#x6570;&#x636E;&#xFF1B;&#x200B;
  35. &#x200B; FastJsonConfig fastJsonConfig=new FastJsonConfig();&#x200B;
  36. &#x200B; fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);&#x200B;
  37. &#x200B; //&#x9644;&#x52A0;&#xFF1A;&#x5904;&#x7406;&#x4E2D;&#x6587;&#x4E71;&#x7801;&#x200B;
  38. &#x200B; List<mediatype> fastMedisTypes = new ArrayList<mediatype>();&#x200B;</mediatype></mediatype>
  39. &#x200B; fastMedisTypes.add(MediaType.APPLICATION_JSON_UTF8);&#x200B;
  40. &#x200B; fastConverter.setSupportedMediaTypes(fastMedisTypes);&#x200B;
  41. &#x200B; //3&#x3001;&#x5728;convert&#x4E2D;&#x6DFB;&#x52A0;&#x914D;&#x7F6E;&#x4FE1;&#x606F;&#x200B;
  42. &#x200B; fastConverter.setFastJsonConfig(fastJsonConfig);&#x200B;
  43. &#x200B; HttpMessageConverter<?> converter=fastConverter;&#x200B;
  44. &#x200B; return new HttpMessageConverters(converter);&#x200B;
  45. &#x200B;}&#x200B;

}
其实代码的核心是相同的,这是调取的方式不同而已。两种方式都可以满足我们对于fastjson的依赖使用。

下面使用​​@JSONField​​​()注解在实体类中进行验证
代码如下。
​​​@JSONField​​​(format = “yyyy-MM-dd”)
private Date birthday;
Controller中代码如下。
​​​@RequestMapping​​​(“/save”)
public Student save(){
Student student=new Student();
student.setName(“婷婷”);
student.setAge(23);
student.setSex(“女”);
student.setBirthday(new Date());
studentService.save(student);
return student;
}
浏览器返回结果:
{
“age”:23,
“birthday”:”2018-07-10″,
“id”:97,
“name”:”婷婷”,
“sex”:”女”
}
除此之外,我们还可以通过​​​@JSONField​​​(serialize = false)来决定字段的显示与否。设置如下。
​​​@JSONField​​​(serialize = false)
private Date birthday;
如果这样设置浏览器返回结果如下,birthday将不再显示。
{
“age”:23,
“id”:97,
“name”:”婷婷”,
“sex”:”女”
}

Original: https://blog.51cto.com/u_15659525/5339757
Author: 明天继续飞
Title: Spring Boot fastJSON的使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/517704/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球