将旧的嵌套Java代码序列化为Json

时间:2014-10-08 05:11:53

标签: json serialization nested jackson gson

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

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

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

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

  4. 经理循环依赖。

  5. 正在考虑Jackson和Gson的这一要求。虽然在编写新的Java Pojo时有很多选项使用注释来指定序列化配置,但我正在研究需要在不更改当前Java代码的情况下指定序列化属性的选项。杰克逊和格森似乎确实有这些选择,但没有深入记录。 哪个库更容易配置以满足上述要求?除杰克逊/格森以外的任何其他强大的图书馆?任何指向这将有很大帮助。

    非常感谢你的时间。

1 个答案:

答案 0 :(得分:0)

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

但是考虑到你的所有要求,最好只使用Jackson模型或GSON(获得JsonNode等),并根据自己的喜好手动处理转换。 然后,您可以将树值转换为POJO;例如,杰克逊有这样做的方法(ObjectMapper.treeToValue().valueToTree().convertValue()),允许转换结构兼容的表示。