FASTJSON2使用方法
FASTJSON v2
是FASTJSON
项目的重要升级,目标是为下一个十年提供一个高性能的JSON
库。通过同一套API
,
-
支持
JSON/JSONB
两种协议, JSONPath是一等公民。 -
支持全量解析和部分解析。
1. 使用准备
1.1 添加依赖
Maven
:
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.52</version>
</dependency>
2 简单使用
2.1 将JSON
解析为JSONObject
Java
:
String text = "...";
JSONObject data = JSON.parseObject(text);
byte[] bytes = ...;
JSONObject data = JSON.parseObject(bytes);
2.2 将JSON
解析为JSONArray
Java
:
String text = "...";
JSONArray data = JSON.parseArray(text);
2.3 将JSON
解析为Java
对象
Java
:
String text = "...";
User data = JSON.parseObject(text, User.class);
2.4 将Java
对象序列化为JSON
Java
:
Object data = "...";
String text = JSON.toJSONString(data);
byte[] text = JSON.toJSONBytes(data);
2.5 使用JSONObject
、JSONArray
2.5.1 获取简单属性
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);
2.5.2 读取JavaBean
Java
:
JSONArray array = ...
JSONObject obj = ...
User user = array.getObject(0, User.class);
User user = obj.getObject("key", User.class);
2.5.3 转为JavaBean
Java
:
JSONArray array = ...
JSONObject obj = ...
User user = obj.toJavaObject(User.class);
List<User> users = array.toJavaList(User.class);
2.6 将JavaBean
对象序列化为JSON
Java
:
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"
}
3. 进阶使用
3.1 使用JSONB
3.1.1 将JavaBean
对象序列化JSONB
User user = ...;
byte[] bytes = JSONB.toBytes(user);
byte[] bytes = JSONB.toBytes(user, JSONWriter.Feature.BeanToArray);
3.1.2 将JSONB
数据解析为JavaBean
byte[] bytes = ...
User user = JSONB.parseObject(bytes, User.class);
User user = JSONB.parseObject(bytes, User.class, JSONReader.Feature.SupportBeanArrayMapping);
3.2 使用JSONPath
3.2.1 使用JSONPath
读取部分数据
String text = ...;
JSONPath path = JSONPath.of("$.id"); // 缓存起来重复使用能提升性能
JSONReader parser = JSONReader.of(text);
Object result = path.extract(parser);
3.2.2 使用JSONPath
读取部分byte[]
的数据
byte[] bytes = ...;
JSONPath path = JSONPath.of("$.id"); // 缓存起来重复使用能提升性能
JSONReader parser = JSONReader.of(bytes);
Object result = path.extract(parser);
3.2.3 使用JSONPath
读取部分byte[]
的数据
byte[] bytes = ...;
JSONPath path = JSONPath.of("$.id"); // 缓存起来重复使用能提升性能
JSONReader parser = JSONReader.ofJSONB(bytes); // 注意这里使用ofJSONB方法
Object result = path.extract(parser);