##(一)编写步骤
- 编写实体类Demo
- 编写getDemo()方法
- 测试
##(二)实现步骤
###1.新建Demo类负责需要实例化返回的JSON数据
代码如下:
package com.zhang.springbootdemo;
import java.util.Date;
/**
* @author created by Zhangdazhuang
* @version v.0.1
* @date 2018/9/1
* @备注 测试
**/
public class Demo {
private int id;
private String name;
private Date createTime;
/**
* 不返回某个属性,设置deserialize 是否需要序列化
*/
private String remarks;
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Demo(int id, String name) {
this.id = id;
this.name = name;
}
public Demo() {
}
public Demo(int id, String name, Date createTime) {
this.id = id;
this.name = name;
this.createTime = createTime;
}
}
###2.编写Controller层,负责接收网页请求。
SpringBoot默认有JSon解析框架,所以不需要加入架包。
RestController是Springboot特有注解风格,支持返回jSON数据序列化。
RestController
package com.zhang.firstboot;
import com.zhang.firstboot.bean.Cat;
import com.zhang.firstboot.service.CatService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
/**
* @author created by Zhangdazhuang
* @version v.0.1
* @date 2018/9/1
* @备注 测试
**/
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "hello11";
}
@RequestMapping("/hello1")
public String hello1() {
return "hello123";
}
@RequestMapping("/hello2")
public String hello2() {
return "hello12";
}
/**
* Spring boot默认使用的jackson的json解析框架
*
* @return
*/
@RequestMapping("/getDemo")
public Demo getDemo() {
//栈保存变量,对象的引用
//堆申请对象内存空间
Demo demo = new Demo(1, "张三");
demo.setCreateTime(new Date());
demo.setRemarks("这是备注信息");
return demo;
}
}
###3.测试。
1.首先测试是否能访问项目,
说明能访问到Controller层代码。
2.测试返回json
说明使用springboot默认的Json框架解析成功。
显示可能不一样,可以在浏览器插件搜索json下载json插件自动解码。
###4.采用FastJson解析Json,替换Springboot默认Json框架。
####1.在pom.xml中引入fastjson依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
这里要说下很重要的话,官方文档说的1.2.10以后,会有两个方法支持HttpMessageconvert,一个是FastJsonHttpMessageConverter,支持4.2以下的版本,一个是FastJsonHttpMessageConverter4支持4.2以上的版本,具体有什么区别暂时没有深入研究。这里也就是说:低版本的就不支持了,所以这里最低要求就是1.2.10+。
springboot最好选用最新版本,调整pom中parent版本号。
####2.配置fastjon(支持两种方法)
1.方法一
(1)启动类继承extends WebMvcConfigurerAdapter
(2)覆盖方法configureMessageConverters
修改启动类:修改以后的启动类如下,添加了新方法configureMessageConverters
package com.zhang.springbootdemo;
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.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.util.List;
@SpringBootApplication
public class SpringbootdemoApplication extends WebMvcConfigurerAdapter {
//第一种方法
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
/*
* 1、需要先定义一个 convert 转换消息的对象;
* 2、添加fastJson 的配置信息,比如:是否要格式化返回的json数据;
* 3、在convert中添加配置信息.
* 4、将convert添加到converters当中.
*
*/
//1、需要先定义一个 convert 转换消息的对象;
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2、添加fastJson 的配置信息,比如:是否要格式化返回的json数据;
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//3、在convert中添加配置信息.
fastConverter.setFastJsonConfig(fastJsonConfig);
//4、将convert添加到converters当中.
converters.add(fastConverter);
}
public static void main(String[] args) {
SpringApplication.run(SpringbootdemoApplication.class, args);
}
}
启动验证成功。
2.第二种方法
(1)在App.java启动类中,
注入Bean : HttpMessageConverters。
修改过的代码如下,启动依然成功返回JSON。
package com.zhang.springbootdemo;
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.http.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.util.List;
@SpringBootApplication
public class SpringbootdemoApplication extends WebMvcConfigurerAdapter {
// //第一种方法
// @Override
// public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
// super.configureMessageConverters(converters);
//
// /*
// * 1、需要先定义一个 convert 转换消息的对象;
// * 2、添加fastJson 的配置信息,比如:是否要格式化返回的json数据;
// * 3、在convert中添加配置信息.
// * 4、将convert添加到converters当中.
// *
// */
//
// //1、需要先定义一个 convert 转换消息的对象;
// FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//
// //2、添加fastJson 的配置信息,比如:是否要格式化返回的json数据;
// FastJsonConfig fastJsonConfig = new FastJsonConfig();
// fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//
// //3、在convert中添加配置信息.
// fastConverter.setFastJsonConfig(fastJsonConfig);
//
// //4、将convert添加到converters当中.
// converters.add(fastConverter);
//
// }
/**
* 在这里我们使用@Bean注入 fast
*
* @return
*/
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
// 1、需要先定义一个 convert 转换消息的对象;
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2、添加fastJson 的配置信息,比如:是否要格式化返回的json数据;
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//3、在convert中添加配置信息.
fastConverter.setFastJsonConfig(fastJsonConfig);
HttpMessageConverter<?> converter = fastConverter;
return new HttpMessageConverters(converter);
}
public static void main(String[] args) {
SpringApplication.run(SpringbootdemoApplication.class, args);
}
}
专栏目录:
Springboot快速入门教程(一) 搭建Springboot
Springboot快速入门教程(二) 返回JSON
Springboot快速入门教程(三) 热部署
Springboot快速入门教程(四) Spring Boot JPA-Hibernate介绍
Springboot快速入门教程(五) Spring Boot JPA-Hibernate实现
Springboot快速入门教程(六) Spring Boot JdbcTemplate
Springboot快速入门教程(七)全局异常捕捉
Springboot快速入门教程(八) Spring Boot 路径访问问题