SpringBoot中使用FastJson处理JSON

本文介绍了如何在SpringBoot项目中使用FastJson处理JSON,强调了FastJson的速度和功能优势,并提供了添加FastJson依赖、配置及解决序列化时属性顺序混乱的方法。还提到了通过@JSONField(ordinal=1)注解来定制序列化顺序。
一、FastJson简介

JSON 协议使用方便,越来越流行,JSON 的处理器有很多,这里我介绍一下FastJson,FastJson 是阿里的开源框架,被不少企业使用,是一个极其优秀的 Json 框架,是目前解析Json最快的工具。

FastJson的特点:

  1. FastJson速度快,无论序列化和反序列化,都是当之无愧的fast。
  2. 功能强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)。
  3. 零依赖(没有依赖其它任何类库)。

FastJson中的经常调用的方法:

  1. parse(String text):把JSON文本parse为JSONObject或者JSONArray。
  2. parseObject(String text):把JSON文本parse成JSONObject。
  3. parseArray(String text):把JSON文本parse成JSONArray。
  4. toJSONString(Object object):将JavaBean序列化为JSON文本。

对于不了解Json和Gson的伙伴,可以看一下我之前的文章。

  1. SpringBoot默认的JSON解析方案
  2. SpringBoot中使用Gson处理JSON

其中SpringBoot中使用Gson处理JSON这篇文章中,还对目前主流的4种Json解析方案进行了对比。

二、学习FastJson

第一步】可以使用SpringBoot中使用Gson处理JSON这篇文章中的项目。如果是使用这篇文章中的项目时,需要先去除Gson的依赖,再添加FastJson的依赖,如果不是这篇文章中的项目,直接添加FastJson依赖即可。

FastJson依赖代码如下:

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.62</version>
</dependency>

第二步】对原有WebMvcConfig.java类中的方法删除,然后添加如下方法即可,代码如下:

package com.mango.fastjson.config;

import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class WebMvcConfig {

    @Bean
    FastJsonHttpMessageConverter fastJsonHttpMessageConverter(){
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setDateFormat("yyyy-MM-dd");
        converter.setFastJsonConfig(fastJsonConfig);
        return converter;
    }
}

【运行结果】
在这里插入图片描述
注:此时Json数据格式正确,但是之前使用默认Json和Gson解析时,bean中属性显示的顺序和定义时是相同的,使用FastJson解析时,该顺序却混乱了。

因为FastJson序列化一个java bean,默认是根据fieldName的字母序进行序列化的,如果要按照自己想要的顺序排序时,需要在属性上添加注解@JSONField(ordinal=1),通过该注解的ordinal属性可以指定字段的顺序,这个特性需要1.1.42以上版本支持。

拓展

添加注解@JSONField(ordinal=1)后,默认会按照ordinal等于的数字来排序,默认是0,可以省略不写。

【User.java】

package com.mango.fastjson.bean;

import com.alibaba.fastjson.annotation.JSONField;

import java.util.Date;

public class User {

    @JSONField
    private Integer id;
    @JSONField(ordinal = 1)
    private String username;
    @JSONField(ordinal = 2)
    private String address;
    @JSONField(ordinal = 3)
    private Date birthday;

    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 getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

【运行结果】
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值