编程小知识【java-0011】java常用开发库-json库-全球热头条

哔哩哔哩   2023-06-15 07:48:31

Java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库。

常用的 JSON 类库:

FastJson: 阿里巴巴开发的 JSON 库,性能优秀。


(资料图片仅供参考)

Jackson: 社区十分活跃且更新速度很快。

Gson: 谷歌开发的 JSON 库,功能十分全面。

相关源码、文档可前往github查看。

FastJson

Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。

优点:

提供服务器端、安卓客户端两种解析工具,性能表现较好。

提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。

允许转换预先存在的无法修改的对象(只有class、无源代码)。

Java泛型的广泛支持。

允许对象的自定义表示、允许自定义序列化类。

支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)。

缺点:

FastJson 源码质量较低

FastJson Bug、漏洞较多

FastJson 牺牲多数场景下的稳定性而提高的效率

ps:fastjson2在2022年发布了,它是fastjson的重要升级,目标是为下一个十年提供一个高性能的JSON库, fastjson2性能相比原先旧的 fastjson有了很大提升,并且 fastjson2更安全,完全删除autoType白名单,提升了安全性。但是是否像官方说的那样有巨大提升,我们还要拭目以待。

JackSon

3个核心模块:

Streaming: jackson-core jar,定义了底层的streaming API和实现了Json特性。

Annotations: jackson-annotations jar,包含了标准的Jackson注解。本文暂不介绍。

Databind: jackson-databind jar,实现了数据绑定和对象序列化,它依赖于streaming和annotations的包。

优点:

性能较高,解析速度快。

支持多种数据格式,包括JSON、XML、YAML等。

支持数据绑定,可以将JSON数据直接绑定到Java对象上。

支持注解,可以通过注解来控制序列化和反序列化的过程。

社区活跃,文档齐全,使用广泛。

缺点:

配置较为复杂,需要掌握较多的API。

对于复杂的数据结构,需要手动编写代码来处理。

Gson

Gson是谷歌开发的 JSON 库,目前功能最全的 JSON 库,它可以将Java对象转换为相应的JSON形式,也可以将JSON字符串转换为对应的Java对象。 Gson可以使用任意Java对象,包括哪些预先存在的、不在你的源代码中的对象(因此,你并不知道对象的属性)。

优点:

轻量

简洁

功能全面

缺点:

性能对比Fastjson、jackson稍差

最新资讯