SpringBoot学习-(2)使用FastJson作为json解析器

前面一篇SpringBoot学习-(1)第一个小例子
作为springboot的helloworld介绍了springboot的基本配置和使用效果(如果没有接触过springboot的小伙伴看到该篇博文,建议从第一篇开始跟着笔者一起学习,后面的)。
springboot可以直接将对象解析为json格式并返回数据。springboot使用了jackson作为json解析器。
这里写图片描述

alibaba开源的FastJson是一个被广泛使用的json解析器,所以很多人习惯用FastJson,而不是jackson,那么又想使用springboot怎么办呢?

1.添加FastJson依赖包

 <!-- 添加fastjson依赖包 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.15</version>
        </dependency>

2.配置基本信息

UserInfo
这里使用FastJson的@JSONField(format=”yyyy-MM-dd HH:mm”)对Date类型进行格式话。

package com.tang.bean;

import java.util.Date;

import com.alibaba.fastjson.annotation.JSONField;

public class UserInfo {

    private Integer id;
    private String userName;
    private String loginName;
    private String password;
    private Integer age;

    @JSONField(format="yyyy-MM-dd HH:mm")
    private Date birthDate;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getLoginName() {
        return loginName;
    }
    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public Date getBirthDate() {
        return birthDate;
    }
    public void setBirthDate(Date birthDate) {
        this.birthDate = birthDate;
    }
    @Override
    public String toString() {
        return "UserInfo [id=" + id + ", userName=" + userName + ", loginName="
                + loginName + ", password=" + password + ", age=" + age
                + ", birthDate=" + birthDate + "]";
    }


}

UserInfoController

package com.tang.controller;

import java.util.Date;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.tang.bean.UserInfo;

/**
 * 这里的@RestController相当于@Controller+@ResponseBody
 * @author Tang
 */
@RestController
public class UserInfoController {

    @RequestMapping("/getUser")
    public UserInfo getUserInfo(){
        UserInfo userInfo = new UserInfo();
        userInfo.setId(1);
        userInfo.setUserName("张三");
        userInfo.setLoginName("zhangsan");
        userInfo.setPassword("123456");
        userInfo.setAge(12);
        userInfo.setBirthDate(new Date());
        return userInfo;
    }
}

启动类App

package com.tang;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

3.配置converters

对App启动类进行处理
1)启动类继承WebMvcConfigurerAdapter
2)重写configureMessageConverters方法

package com.tang;

import java.util.List;

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 com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;

@SpringBootApplication
public class App extends WebMvcConfigurerAdapter{

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }


    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        super.configureMessageConverters(converters);

        //1.定义一个消息转换对象convert
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();

        //2.添加fastJson配置信息,是否需要格式化
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);

        //3.在convert添加配置信息
        fastConverter.setFastJsonConfig(fastJsonConfig);

        //4.将convert添加到converters中
        converters.add(fastConverter);
    }
}

或者使用@Bean注解配置,如下:

package com.tang;

import java.util.List;

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.converter.HttpMessageConverter;

import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;

@SpringBootApplication
public class App{

    public static void main(String[] args) {
        SpringApplication.run(App2.class, args);
    }

    /**
     * 通过@Bean注解
     * @return
     */
    @Bean
    public HttpMessageConverters fastJsonHttpMessageConverters() {

        //1.定义一个消息转换对象convert
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();

        //2.添加fastJson配置信息,是否需要格式化
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);

        //3.在convert添加配置信息
        fastConverter.setFastJsonConfig(fastJsonConfig);

        //4.将convert添加到converters中
        HttpMessageConverter<?> converter = fastConverter;
        return new HttpMessageConverters(converter);
    }

}

4.测试

这里写图片描述

fastjson已经起作用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值