JSON解析库 - Fastjson

本文介绍阿里巴巴Fastjson库的使用方法,包括序列化与反序列化操作,并通过示例展示如何定制序列化过程。此外,还对比了Fastjson与其他三个常用JSON库Gson、Jackson、Json-lib的性能。
摘要由CSDN通过智能技术生成

全解史上最快的JSON解析库 - alibaba Fastjson
Java常用的几个Json库,性能强势对比!

基本的序列化与反序列化

public class Student {
    private Long   id;
    private String name;
	//setter and getter
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

public class MainTest {
 public static void main(String[] args) {
        Student stud = new Student();
        stud.setId(3L);
        stud.setName("root");

        // 转换为 JSON
        String jsonString = JSON.toJSONString(stud);
        System.out.println("JSON字符串:" + jsonString);

        // 转换为 对象BEAN
        Student grade = JSON.parseObject(jsonString, Student.class);
        System.out.println("JavaBean对象:" + grade);
	}
}


JSON字符串:{"id":3,"name":"root"}
JavaBean对象:Student{id=3, name='root'}

将对象中的空值输出:

WriteNullListAsEmpty集合:[]
WriteNullStringAsEmpty空字符串:""
WriteNullNumberAsZero数字:0
WriteNullBooleanAsFalse布尔型:false

String text = JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);

Fastjson 定制序列化

1、JSONField

作用与属性或方法


@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
public @interface JSONField {
	//序列化的顺序
    int ordinal() default 0;
	// 序列化的名称
    String name() default "";
	//主要用于日期格式
    String format() default "";
	// 是否序列化
    boolean serialize() default true;
	// 是否反序列化
    boolean deserialize() default true;
	.....
}

示例:

public class Vo{
    //按顺序序列化
    @JSONField(ordinal = 3)
    private int f0;
    @JSONField(ordinal = 2)
    private int f1;
    @JSONField(ordinal = 1)
    private int f2;

    //  配置在属性上
    @JSONField(name="ID")
    private int id;
    @JSONField(name="birthday",format="yyyy-MM-dd")
    private Date date;
    @JSONField(serialize=false)
    public String sex;
    @JSONField(deserialize=false)
    public int age;

    //  配置在方法上
    private  String name;
    @JSONField(name="Name")
    public String getName() {
        return name;
    }
    @JSONField(name="Name")
    public void setName(String name) {
        this.name = name;
    }
}
2、SerializeFilter序列化
3、 ParseProcess反序列化

使用场景

在 Spring MVC 中集成 Fastjson

在 Spring Data Redis 中集成 Fastjson

其他

3个JSON类库分别为:Gson,Jackson,Json-lib

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值