使用Jackson Json序列化Javaparser对象

时间:2017-07-06 07:25:37

标签: java json serialization jackson javaparser

我正在尝试使用Jackson JSON序列化Javaparser对象,但它非常复杂,因为它是第三方库(我无法更改/注释代码),并且内部存在循环依赖。

我的项目结构如下:

对象Analysis包含一些可能互相引用的WrappedNode列表。每个WrappedNode都包含一个JavaParser CallableDeclaration

当我尝试映射Analysis时,我遇到了错误:

JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: com.github.javaparser.metamodel.PropertyMetaModel["containingNodeMetaModel"]->com.github.javaparser.metamodel.SimpleNameMetaModel["declaredPropertyMetaModels"]->java.util.ArrayList[0]->com.github.javaparser.metamodel.PropertyMetaModel["containingNodeMetaModel"]...

所以,为了摆脱无限递归,我知道我必须使用@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id"),这是我在WrappedNode类上做的,但我想我也应该使用{{3来注释JavaParser类}}

问题是有很多字段和很多类,我不知道要注释哪些。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用JavaParser提供的JsonPrinter类。这是一个非常新近的添加(我认为从版本3.2.8),它可能不完美,但你可以超级,超级轻松地使用它