【问题标题】:Serialize legacy nested Java Code to Json将遗留的嵌套 Java 代码序列化为 Json
【发布时间】:2014-12-02 16:22:58
【问题描述】:

寻找一些帮助以将深度嵌套的 java 对象序列化为 Json。约束是我不能添加任何注释或更改当前的 Java 代码。寻找一个功能强大的 Json 库,它具有将 Java 转换为 Json 的配置选项,而无需更改 Java 对象本身。以下是可能需要的一些选项

  1. 指定包含/排除字段/方法。应该能够在嵌套级别指定它。 A 由 B 组成,B 由 C 组成。应该能够在 C 处指定包含/排除。

  2. 在嵌套级别包含/排除对象。

  3. 在转换为 Json 时重命名 java 属性中的字段(也在嵌套级别的对象中)

  4. 管理器循环依赖。

正在寻找 Jackson 和 Gson 来满足此要求。虽然在编写新的 Java Pojo 时有很多选项使用注释来指定序列化配置,但我正在研究需要在不更改当前 Java 代码的情况下指定序列化属性的选项。 Jackson 和 Gson 似乎确实有这些选项,但没有深入记录。 哪个库更容易满足上述要求?除了 Jackson/Gson 之外,还有其他强大的库吗?对此的任何指示都会有很大帮助。

非常感谢您的宝贵时间。

【问题讨论】:

    标签: json serialization nested jackson gson


    【解决方案1】:

    对于 Jackson,您可能会考虑使用所谓的混合注释(参见 f.ex http://www.studytrails.com/java/json/java-jackson-mix-in-annotation.jsp),它允许您指定要使用的混合,而无需将它们直接添加到遗留类中。 这将允许您使用基于注释的配置,但不影响实际的类。

    但考虑到您的所有要求,最好只使用 Jackson 或 GS​​ON 的树模型(获取 JsonNode 等),并根据您的喜好手动处理转换。 然后您可以将树值转换为 POJO;例如,Jackson 有执行此操作的方法(ObjectMapper.treeToValue().valueToTree().convertValue()),它允许转换结构兼容的表示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-28
      • 2017-12-28
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2017-04-13
      相关资源
      最近更新 更多