《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个阿里开源的高性能的JSON库——FASTJSON2。
FASTJSON2是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库。通过同一套API,
1 添加依赖
Maven:
com.alibaba.fastjson2
fastjson2
2.0.3
Gradle:
dependencies {
implementation 'com.alibaba.fastjson2:fastjson2:2.0.3'
}
2 其他模块
如果原来使用fastjson 1.2.x版本,可以使用兼容包,兼容包不能保证100%兼容,请仔细测试验证,发现问题请及时反馈。
Maven:
com.alibaba
fastjson
2.0.3
Gradle:
dependencies {
implementation 'com.alibaba:fastjson:2.0.3'
}
如果项目使用Kotlin,可以使用fastjson-kotlin模块,使用方式上采用kotlin的特性。
Maven:
com.alibaba.fastjson2
fastjson2-kotlin
2.0.3
Gradle:
dependencies {
implementation("com.alibaba.fastjson2:fastjson2-kotlin:2.0.3")
}
在fastjson v2中,package和1.x不一样,是com.alibaba.fastjson2。如果你之前用的是fastjson1,大多数情况直接更包名就即可。
1 将JSON解析为JSONObject
String text = "...";
JSONObject data = JSON.parseObject(text);
byte[] bytes = ...;
JSONObject data = JSON.parseObject(bytes);
2 将JSON解析为JSONArray
String text = "...";
JSONArray data = JSON.parseArray(text);
3 将JSON解析为Java对象
String text = "...";
User data = JSON.parseObject(text, User.class);
4 将Java对象序列化为JSON
Object data = "...";
String text = JSON.toJSONString(data);
byte[] text = JSON.toJSONBytes(data);
5 使用JSONObject、JSONArray
获取简单属性
String text = "{"id": 2,"name": "fastjson2"}";
JSONObject obj = JSON.parseObject(text);
int id = obj.getIntValue("id");
String name = obj.getString("name");
读取JavaBean
JSONArray array = ...
JSONObject obj = ...
User user = array.getObject(0, User.class);
User user = obj.getObject("key", User.class);
转为JavaBean
JSONArray array = ...
JSONObject obj = ...
User user = obj.toJavaObject(User.class);
List users = array.toJavaList(User.class);
6 将JavaBean对象序列化为JSON
class User {
public int id;
public String name;
}
User user = new User();
user.id = 2;
user.name = "FastJson2";
String text = JSON.toJSONString(user);
byte[] bytes = JSON.toJSONBytes(user);
序列化结果
{
"id" : 2,
"name" : "FastJson2"
}
1 使用JSONB
将JavaBean对象序列化JSONB
User user = ...;
byte[] bytes = JSONB.toBytes(user);
byte[] bytes = JSONB.toBytes(user, JSONWriter.Feature.BeanToArray);
将JSONB数据解析为JavaBean
byte[] bytes = ...
User user = JSONB.parseObject(bytes, User.class);
User user = JSONB.parseObject(bytes, User.class, JSONReader.Feature.SupportBeanArrayMapping);
2 使用JSONPath
使用JSONPath读取部分数据
String text = ...;
JSONPath path = JSONPath.of("$.id"); // 缓存起来重复使用能提升性能
JSONReader parser = JSONReader.of(text);
Object result = path.extract(parser);
使用JSONPath读取部分byte[]的数据
byte[] bytes = ...;
JSONPath path = JSONPath.of("$.id"); // 缓存起来重复使用能提升性能
JSONReader parser = JSONReader.of(bytes);
Object result = path.extract(parser);
使用JSONPath读取部分byte[]的数据
byte[] bytes = ...;
JSONPath path = JSONPath.of("$.id"); // 缓存起来重复使用能提升性能
JSONReader parser = JSONReader.ofJSONB(bytes); // 注意这里使用ofJSONB方法
Object result = path.extract(parser);
—END—
开源协议:Apache2.0
开源地址:https://github.com/alibaba/fastjson2
页面更新:2024-04-29
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号