Fastjson

Fastjson2相对Fastjson1版本可以说是一次完全的重构,这里从代码的角度,分析两者的一些区别,并总结一些新的,让小伙伴们使用Fastjson2或者进行功能扩展的时候,能更加顺畅。除了在性能方面的提升之外,Fastjson 2还解决了一系列安全方面的问题和兼容性的问题,这很大的提高了使用的便捷性。

FASTJSON v2是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库。

通过同一套API,支持JSON/JSONB两种协议;JSONPath 是一等公民;支持全量解析和部分解析;支持Java服务端;客户端Android;大数据场景;支持Kotlin支持JSON Schema ;支持Android;支持Graal Native-Image。

一、使用步骤

添加依赖

<dependency>

<groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId>

<version>2.0.27</version>

</dependency>

注意其groupId和v1版本的也有所改变。

二、版本比较

整体继承类的修改

版本V1

//1.Fastjson 1 JSONObject类定义

public class JSONObject extends JSON implements Map<String,Object> ...{

}

//2.Fastjson 1 JSONArray类定义

public class JSONArray extends JSON implements List<Object>... {

}

版本V2

//1.Fastjson2 JSONObject类定义

public class JSONObject extends LinkedHashMap<String, Object> implements InvocationHandler{

}

//2.Fastjson2 JSONArray类定义

public class JSONArray extends ArrayList<Object> {

}

Fastjson2 的JSONObject 实现了链结构的Map,是有序的Map容器。无论是JSONObject或者JSONArray都摆脱了JSON的类,使JSON由抽象类变成了接口。

三、常见类型的优化

时间转化类由原来使用SimpleDateFormat转化为 JDK8 提供的java.time API,吸收了 joda-time的部分精华,功能更强大,性能也更好。同时,DateTimeFormatter 是线程安全的。

四、常见使用

将JSON解析为JSONObject


String text = "...";

JSONObject data = JSON.parseObject(text);

byte[] bytes = ...;

JSONObject data = JSON.parseObject(bytes);

将JSON解析为JSONArray


String text = "...";

JSONArray data = JSON.parseArray(text);

将JSON解析为Java对象


String text = "...";

User data = JSON.parseObject(text, User.class);

将Java对象序列化为JSON


Object data = "...";

String text = JSON.toJSONString(data);

byte[] text = JSON.toJSONBytes(data);

使用JSONObject、JSONArray


String text = "{\"id\": 2,\"name\": \"fastjson2\"}";

JSONObject obj = JSON.parseObject(text);

int id = obj.getIntValue("id");

String name = obj.getString("name");


String text = "[2, \"fastjson2\"]";

JSONArray array = JSON.parseArray(text);

int id = array.getIntValue(0);

String name = array.getString(1);


以上基本上为Fastjson2的一些简单介绍和使用。如需详情的使用可以登录其官网查看。

自研了一套校园外卖系统,你需要吗?
超炫Loading 效果,快围观起来吧!
自动化部署就用它了easy-jenkins
幼儿园管理系统来了,快收藏起来吧!
举报/反馈

java小资

3143获赞 544粉丝
分享自己学习工作,小程序、APP,系统开发
关注
0
0
收藏
分享