為什麼需要 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 應用。
json 系列
字串
DSL-JSON 最快的 java 實現
Ali-FastJson
Google-Gson
Jackson
二進位制
Google protocol buffer
Apache Thrift
Hession
Kryo
Fst
Messagepack
Jboss Marshaling
其他
JsonPath
JsonIter
開源庫
json 針對常見 json 的統一封裝