欢迎光临散文网 会员登陆 & 注册

编程小知识【java-0011】java常用开发库-json库

2023-06-15 08:03 作者:退役程序员老马  | 我要投稿

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



编程小知识【java-0011】java常用开发库-json库的评论 (共 条)

分享到微博请遵守国家法律