Springboot快速入门教程(二) 返回JSON

##(一)编写步骤

  1. 编写实体类Demo
  2. 编写getDemo()方法
  3. 测试

##(二)实现步骤
###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 路径访问问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值