java - FasterXML Jackson Smile 与 json

标签 java json serialization jackson

我正在浏览一些在线资源,发现 jackson可分别用于java对象和json字符串的序列化和反序列化。但同时我发现了一个叫做 smile 的东西.下面是我的疑惑:

  1. jackson json 库是否序列化为基于文本的字节流以用于 json 表示
  2. 微笑是否序列化为非文本,即用于相同二进制表示的二进制字节流
  3. 如果上述假设是正确的,那么 jackson json 库中可用的字节可以被其他理解 json 的库(比如一些 python、ruby json 序列化/反序列化库)反序列化。但是对于 smile 是不可能的,因为它可能有一个非常具体的 java 对象的二进制表示。我说得对吗?

如果我不正确,请指导我找到答案。谢谢。

由于我是计算机科学领域的新手,如果这个问题符合堆栈溢出标准,我深表歉意。

最佳答案

普通 JSON 标记和 Smile 之间的主要区别在于 Smile 是 JSON 的二进制标记版本。由于 smile 更紧凑,它在反序列化时的开销更少,并且是大型和复杂有效负载的更好选择。

何时使用每个标记:

  • JSON/XML - 当您想要确保 API 的兼容性,同时将其与各种序列化协议(protocol)分离时。每一种都有变体,带有嵌入式元数据,可以为数据提供更多上下文。
  • BSON/Smile/Kryo - 当您需要速度时。这可以是实时应用程序、数据收集、内部服务器通信。

这两种格式是兼容的:您可以发送 Smile 并通过包装适当的解码器将其解码为 JSON。

Some benchmark values for each

关于java - FasterXML Jackson Smile 与 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31652452/

相关文章:

java - 客户端套接字连接可以是任何东西吗?

java - Wicket - 持久化和非持久化 JPA 实体的序列化

c++ - 将 8 个 bool 值保存到 1 个字节中

java - Android jobScheduler 不会因 jobFinished(params, false) 而停止

java - 如何在java中删除列表中的元素数组?

javascript - XMLHttpRequest 响应类型和 JSON

java - java对象转json

javascript - Json:编辑深度嵌套的值

php - 序列化数组或不序列化数组 : how to store a survey

c# - 在给定类更改的情况下,在序列化之间键入对象