Spring-Boot是基于Spring框架的,它并不是对Spring框架的功能增强,而是对Spring的一种快速构建的方式。

网站设计制作过程拒绝使用模板建站;使用PHP+MYSQL原生开发可交付网站源代码;符合网站优化排名的后台管理系统;网站设计、成都做网站收费合理;免费进行网站备案等企业网站建设一条龙服务.我们是一家持续稳定运营了10余年的成都创新互联公司网站建设公司。
Spring-boot应用程序提供了默认的json转换器,为Jackson。示例:
pom.xml中dependency配置:
4.0.0 com.qinker spring-boot war org.springframework.boot spring-boot-starter-parent 2.0.0.RELEASE 0.0.1-SNAPSHOT spring-boot http://maven.apache.org UTF-8 9 org.springframework.boot spring-boot-starter-web spring-boot 
创建三个类:MainApp.java和User.java以及HelloController.java:
package com.springboot; 
import java.util.Date; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 
@RestController 
public class HelloController { 
 
 @RequestMapping("/hello") 
 public String hello() { 
  return "hello,SpringBoot"; 
 } 
  
 /** 
  * 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; 
 } 
} package com.springboot; 
import java.io.Serializable; 
import java.util.Date; 
public class User implements Serializable{ 
 private String name;  
 private int age;  
 private Date createTime; 
 public String getName() { 
  return name; 
 } 
 
 public void setName(String name) { 
  this.name = name; 
 } 
 
 public int getAge() { 
  return age; 
 } 
 
 public void setAge(int age) { 
  this.age = age; 
 } 
 
 public Date getCreateTime() { 
  return createTime; 
 } 
 
 public void setCreateTime(Date createTime) { 
  this.createTime = createTime; 
 }  
} package com.springboot; 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
@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"} 可见:我们并未做任何配置,返回的却是json数据,可见Spring-Boot对json做了默认实现,使用的是内置Jackson转换器。
那么,下面看看如何使用自定义的json转换器,这里以fastjson为例:
首先,引入fastjson包,在pom中添加如下依赖:
com.alibaba fastjson 1.2.47 
为了方便看出效果:修改User类:
package com.springboot; 
import java.io.Serializable; 
import java.util.Date; 
import com.alibaba.fastjson.annotation.JSONField; 
@SuppressWarnings("serial") 
public class User implements Serializable{ 
 private String name;  
 private int age;  
 @JSONField(format="yyyy-MM-dd HH:mm") 
 private Date createTime; 
 public String getName() { 
  return name; 
 } 
 
 public void setName(String name) { 
  this.name = name; 
 } 
 
 public int getAge() { 
  return age; 
 } 
 
 public void setAge(int age) { 
  this.age = age; 
 } 
 
 public Date getCreateTime() { 
  return createTime; 
 } 
 
 public void setCreateTime(Date createTime) { 
  this.createTime = createTime; 
 } 
} 
1.实现fastjson自定义json转换的第一种方式,Spring-Boot实现WebMvcConventer接口:
修改MainApp如下:
package com.springboot; 
import java.util.ArrayList; 
import java.util.List; 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.http.MediaType; 
import org.springframework.http.converter.HttpMessageConverter; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 
import com.alibaba.fastjson.serializer.SerializerFeature; 
import com.alibaba.fastjson.support.config.FastJsonConfig; 
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; 
 @SpringBootApplication 
public class MainApp implements WebMvcConfigurer{ 
 @Override 
 public void configureMessageConverters(List> converters) { 
  WebMvcConfigurer.super.configureMessageConverters(converters); 
  //创建fastjson转换器实例 
  FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); 
  //配置对象 
  FastJsonConfig config = new FastJsonConfig(); 
  List 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":"张三" 
} 
2.使用@Bean注解注入fastjson转换器:修改MainApp如下:
package com.springboot; 
import java.util.ArrayList; 
import java.util.List; 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.boot.autoconfigure.http.HttpMessageConverters; 
import org.springframework.context.annotation.Bean; 
import org.springframework.http.MediaType; 
import com.alibaba.fastjson.serializer.SerializerFeature; 
import com.alibaba.fastjson.support.config.FastJsonConfig; 
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; 
@SpringBootApplication 
public class MainApp{ 
 @Bean 
 public HttpMessageConverters fastJsonHttpMessageConventers() { 
  FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); 
  FastJsonConfig config = new FastJsonConfig(); 
  config.setSerializerFeatures(SerializerFeature.PrettyFormat); 
  List 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); 
 } 
} 
 访问结果是一样的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。
新闻标题:SpringBoot使用自定义json解析器的使用方法
网页网址:http://www.scyingshan.cn/article/gjhcdd.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 