为什么需要 json
不同语言之间,或者相同语言之间。需要一种对象到 json (持久化)的一种实现方式。以及反序列化的方式。
常见的序列化库对比
以下是 DSL、fastjson、Gson、Jackson、Google Protocol Buffers、Apache Thrift、Hessian、Kryo、Fst、MessagePack 和 JBoss Marshalling 的详细对比表格:
特性 | DSL-Json | Fastjson | Gson | Jackson | Google Protocol Buffers | Apache Thrift | Hessian | Kryo | FST | MessagePack | JBoss Marshalling |
---|---|---|---|---|---|---|---|---|---|---|---|
类型 | JSON库 | JSON库 | JSON库 | JSON库 | 二进制序列化 | 跨语言序列化 | 二进制序列化 | 二进制序列化 | 二进制序列化 | 二进制序列化 | 二进制序列化 |
序列化性能 | 高效 | 快速 | 一般 | 高效 | 高效 | 高效 | 一般 | 高效 | 超高效 | 高效 | 高效 |
反序列化性能 | 高效 | 快速 | 一般 | 高效 | 高效 | 高效 | 一般 | 高效 | 超高效 | 高效 | 高效 |
支持的数据格式 | JSON | JSON | JSON | JSON, XML, YAML等 | Protobuf | Thrift | 二进制, JSON | 二进制 | 二进制 | 二进制, JSON | 二进制 |
数据类型支持 | JVM数据类型 | JVM数据类型 | JVM数据类型 | 广泛支持 | 结构化数据 | 结构化数据 | 结构化数据 | 结构化数据 | 结构化数据 | 结构化数据 | 结构化数据 |
跨语言支持 | 否 | 否 | 否 | 否 | 是 | 是 | 否 | 否 | 否 | 是 | 否 |
版本兼容性 | 较好 | 较好 | 较好 | 较好 | 良好 | 良好 | 良好 | 较好 | 较好 | 较好 | 良好 |
复杂对象支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
可扩展性 | 高 | 中 | 中 | 高 | 高 | 高 | 中 | 中 | 中 | 中 | 高 |
序列化/反序列化库 | 自带 | 自带 | 自带 | 自带 | 自带 | 自带 | 自带 | 自带 | 自带 | 自带 | 自带 |
学习曲线 | 低 | 低 | 低 | 中 | 中 | 中 | 低 | 低 | 低 | 中 | 中 |
社区支持 | 较小 | 大 | 大 | 大 | 大 | 大 | 中 | 中 | 中 | 中 | 中 |
总结
- DSL-Json 和 Jackson 提供了高效的 JSON 序列化性能。
- Fastjson 和 Gson 是常用的 JSON 库,易于使用但性能稍逊。
- Google Protocol Buffers 和 Apache Thrift 提供跨语言支持的高效序列化方案。
- Kryo 和 FST 提供了非常高效的二进制序列化。
- Hessian 和 JBoss Marshalling 是稳定的二进制序列化方案,适用于 Java 应用。