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稍差