您好,登錄后才能下訂單哦!
Spring-Boot是基于Spring框架的,它并不是對(duì)Spring框架的功能增強(qiáng),而是對(duì)Spring的一種快速構(gòu)建的方式。
Spring-boot應(yīng)用程序提供了默認(rèn)的json轉(zhuǎn)換器,為Jackson。示例:
pom.xml中dependency配置:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.qinker</groupId> <artifactId>spring-boot</artifactId> <packaging>war</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <version>0.0.1-SNAPSHOT</version> <name>spring-boot</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>9</java.version> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <finalName>spring-boot</finalName> </build> </project>
創(chuàng)建三個(gè)類: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 默認(rèn)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); } }
啟動(dòng)MainApp:訪問(wèn)http://localhost:8080/getUser,結(jié)果如下:
{"name":"張三","age":33,"createTime":"2018-04-04T03:03:08.534+0000"}
可見(jiàn):我們并未做任何配置,返回的卻是json數(shù)據(jù),可見(jiàn)Spring-Boot對(duì)json做了默認(rèn)實(shí)現(xiàn),使用的是內(nèi)置Jackson轉(zhuǎn)換器。
那么,下面看看如何使用自定義的json轉(zhuǎn)換器,這里以fastjson為例:
首先,引入fastjson包,在pom中添加如下依賴:
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>
為了方便看出效果:修改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.實(shí)現(xiàn)fastjson自定義json轉(zhuǎn)換的第一種方式,Spring-Boot實(shí)現(xiàn)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<HttpMessageConverter<?>> converters) { WebMvcConfigurer.super.configureMessageConverters(converters); //創(chuàng)建fastjson轉(zhuǎn)換器實(shí)例 FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); //配置對(duì)象 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); } }
啟動(dòng)程序:訪問(wèn)上面的路徑:瀏覽器會(huì)看到如下結(jié)果:
{ "age":33, "createTime":"2018-04-04 11:14", "name":"張三" }
2.使用@Bean注解注入fastjson轉(zhuǎn)換器:修改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<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); } }
訪問(wèn)結(jié)果是一樣的。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。