湖州做网站推广的公司,phpnow安装wordpress,旅游网站开发背景及意义,网站接广告能赚多少钱FASTJSON 2是一个性能极致并且简单易用的Java JSON库。 FASTJSON 2是FASTJSON项目的重要升级#xff0c;和FASTJSON 1相比#xff0c;性能有非常大的提升#xff0c;解决了autoType功能因为兼容和白名单的安全性问题。 性能极致#xff0c;性能远超过其他流行JSON库#x…FASTJSON 2是一个性能极致并且简单易用的Java JSON库。 FASTJSON 2是FASTJSON项目的重要升级和FASTJSON 1相比性能有非常大的提升解决了autoType功能因为兼容和白名单的安全性问题。 性能极致性能远超过其他流行JSON库包括jackson/gson/org.json性能数据: https://github.com/alibaba/fastjson2/wiki/fastjson_benchmark 支持JDK新特性包括JDK 11/JDK 17针对compact string优化支持Record支持GraalVM Native-Image 完善的JSONPath支持支持SQL:2016的JSONPath语法 支持Android 8客户端和服务器一套API 支持Kotlin https://alibaba.github.io/fastjson2/kotlin_cn 支持JSON Schema https://alibaba.github.io/fastjson2/json_schema_cn 新增加支持二进制格式JSONB https://alibaba.github.io/fastjson2/jsonb_format_cn
1. 使用准备
1.1 添加依赖
在fastjson v2中groupId和1.x不一样是com.alibaba.fastjson2
dependencygroupIdcom.alibaba.fastjson2/groupIdartifactIdfastjson2/artifactIdversion2.0.42/version
/dependency1.2 其他模块
Fastjson v1兼容模块 如果原来使用fastjson 1.2.x版本可以使用兼容包兼容包不能保证100%兼容请仔细测试验证发现问题请及时反馈。
dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion2.0.42/version
/dependencyFastjson Extension扩展模块 如果项目使用SpringFramework等框架可以使用fastjson-extension模块使用方式参考 SpringFramework Support。
dependencygroupIdcom.alibaba.fastjson2/groupIdartifactIdfastjson2-extension-spring5/artifactIdversion2.0.42/version
/dependency
dependencygroupIdcom.alibaba.fastjson2/groupIdartifactIdfastjson2-extension-spring6/artifactIdversion2.0.42/version
/dependency2. 简单使用
在fastjson v2中package和1.x不一样是com.alibaba.fastjson2。如果你之前用的是fastjson1大多数情况直接更包名就即可。
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);
ListUser 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);