快捷搜索:  汽车  科技

fastjson反序列化性能(新一代json序列化和反序列化工具)

fastjson反序列化性能(新一代json序列化和反序列化工具)对象数组转json测试:我们创建了2个User对象,将它放到集合List中,通过JSON.toJSONString序列化为json字符串。@Test public void parseObjectTest() { String json = "{\"age\":25 \"id\":1 \"userName\":\"mask\"}"; User user = JSON.parseObject(json User.class); // User(id=1 userName=mask age=25) System.out.println(user); }2.数组json序列化、反序列化@Data public class User { /** * 自增id */

背景

根据官方宣称,fastjson2是fastjosn项目的重要升级,目标是为下一个十年提供一个高性能的JSON库。其中的API和fastjson一代几乎没有区别,可以很好方便旧系统升级fastjson到fastjson2,本文演示下fastjson二代的常用API使用。

fastjson反序列化性能(新一代json序列化和反序列化工具)(1)

https://github.com/alibaba/fastjson2

使用

首先是要引入fastjson2的maven依赖,目前官方最近版本为2.0.4。

<dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>2.0.4</version> </dependency>

我们先定义一个JavaBean——User,后续用他创建对象,进行json序列化反序列化操作

@Data public class User { /** * 自增id */ private Integer id; /** * 用户名称 */ private String userName; /** * 年龄 */ private Integer age; }

1.对象json序列化、反序列化

对象转换json字符串测试:我们创建了1个User对象,通过JSON.toJSONString将它序列化为json字符串。

@Test public void toJSONTest() { User user = new User(); user.setAge(25); user.setId(1); user.setUserName("mask"); String json = JSON.toJSONString(user); // {"age":25 "id":1 "userName":"mask"} System.out.println(json); }

json字符串转对象测试:我们通过JSON.parseObject将User对象的json字符串,转换回User对象。

@Test public void parseObjectTest() { String json = "{\"age\":25 \"id\":1 \"userName\":\"mask\"}"; User user = JSON.parseObject(json User.class); // User(id=1 userName=mask age=25) System.out.println(user); }

2.数组json序列化、反序列化

对象数组转json测试:我们创建了2个User对象,将它放到集合List中,通过JSON.toJSONString序列化为json字符串。

@Test public void toJSONTest() { ArrayList<User> users = new ArrayList<>(); User tom = new User(); tom.setId(1); tom.setUserName("tom"); tom.setAge(12); User david = new User(); david.setId(2); david.setUserName("david"); david.setAge(13); users.add(tom); users.add(david); String json = JSON.toJSONString(users); // [{"age":12 "id":1 "userName":"tom"} {"age":13 "id":2 "userName":"david"}] System.out.println(json); }

json字符串转数组对象测试:我们将一个json字符串,转换为User对象数组。

@Test public void parseArrayTest() { String json = "[{\"age\":12 \"id\":1 \"userName\":\"tom\"} {\"age\":13 \"id\":2 \"userName\":\"david\"}]"; List<User> list = JSON.parseArray(json User.class); // [User(id=1 userName=tom age=12) User(id=2 userName=david age=13)] System.out.println(list); }

以上可以看到,fastjson2的常用API,和fastjson2的常用API是一致的,我们的旧项目升级fastjson2,很大程度上,只需要引入fastjson2的maven依赖,然后改下包的路径为com.alibaba.fastjson2.JSON即可。

其他

fastjson经常出现存在反序列化漏洞,攻击者通过构造恶意JSON字符串,可导致任意代码执行等危害。希望fastjson2能彻底解决这个问题,或者频率低点吧。

fastjson反序列化性能(新一代json序列化和反序列化工具)(2)

猜您喜欢: