寻找一些帮助将深层嵌套的java对象序列化为Json。约束是我无法添加任何注释或更改当前的Java代码。寻找一个功能强大的Json库,它具有将Java转换为Json而无需自行更改Java对象的配置选项。以下是可能需要的一些选项
指定包含/排除字段/方法。应该能够在嵌套级别指定它。 A由B组成,B由C组成。应具有在C中指定包含/排除的能力。
在嵌套级别包含/排除对象。
转换为Json时重命名java属性中的字段(也是嵌套级别对象)
经理循环依赖。
正在考虑Jackson和Gson的这一要求。虽然在编写新的Java Pojo时有很多选项使用注释来指定序列化配置,但我正在研究需要在不更改当前Java代码的情况下指定序列化属性的选项。杰克逊和格森似乎确实有这些选择,但没有深入记录。 哪个库更容易配置以满足上述要求?除杰克逊/格森以外的任何其他强大的图书馆?任何指向这将有很大帮助。
非常感谢你的时间。
答案 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()
),允许转换结构兼容的表示。