【问题标题】:Why does one convert Java objects to JSON and vice versa? [closed]为什么要将 Java 对象转换为 JSON,反之亦然? [关闭]
【发布时间】:2016-06-03 19:18:48
【问题描述】:

我正在探索杰克逊图书馆及其相关主题。我无法理解为什么需要将 Java 对象转换为 JSON,反之亦然?这对我来说真的是一场表演。

【问题讨论】:

  • 您可以尝试 JacksonUtils API 以供参考。
  • 您基本上是在问“我为什么要将对象序列化为 JSON”(这样您就可以将它们发送到能够理解 JSON 的东西)和“我为什么要将 JSON 反序列化为对象”(所以您可以使用 JSON 中与您对话的内容)?我的意思是,这是不言自明的,不是吗?
  • 你确定你知道杰克逊是干什么用的吗?它的目的是获取Java对象并以可存储的格式(在很多其他格式,JSON)中序列化它们。
  • JSON 是一种将对象表示为字符串的方式。您是在问为什么能够在字符串之间进行转换是有用的?
  • 如果您希望其他人能够使用您的数据,将其设置为通用格式会很有帮助。 JSON、XML、Soap等……都是这样的格式。

标签: java json jackson


【解决方案1】:

JSON 被认为是一种方便的“传输编码”。它比 XML 更紧凑,并且易于人工读取和生成。

大多数语言都有相当成熟的 JSON 编码器/解码器,因此您的 Java 应用程序可以生成运行在浏览器中的 Javascript 可以读取的 JSON 消息。如果在过程中的某处存在错误,您可以轻松阅读 JSON 文本并了解错误是在您的 Java 代码还是 Javascript 代码中。

如果您不在两个不同的系统之间传输数据,那么将事物编码为 JSON 并没有多大意义 - 您可能不想将 Java 对象转换为 JSON,将其传递给不同的方法,然后再将其转换回来成一个 Java 对象。您将失去类型安全性,并且白白做很多工作。

【讨论】:

    【解决方案2】:

    序列化为 JSON 可让您从非 Java 编写的软件(例如在 Web 客户端中运行的 Javascript 代码等)访问对象中包含的数据。

    Java 原生(二进制)序列化很难从 Java 以外的任何其他东西中读取,并且当您的类发生变化时保持向后兼容性也不是一件容易的事。

    【讨论】:

      【解决方案3】:

      JSON 通常用于serialization

      当您无法轻松地将 Java 对象本身传递到您需要的地方时,将 Java 对象转换为 JSON 非常有用,例如存储它或发出 HTTP 请求。反之亦然,当您阅读它时,将其转换回 Java 对象以供使用。

      【讨论】:

        猜你喜欢
        • 2013-08-09
        • 1970-01-01
        • 2015-03-05
        • 2011-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多