Json自定义反序列化程序陷入无限递归

时间:2016-12-01 17:43:36

标签: java json jackson deserialization

通过以下方式实现自定义反序列化器以反序列化JSON。但是mapper.treeToValue导致无限次地调用代码。

sha1

执行mapper.treeToValue后,控制再次返回myResourcedeserialize方法并执行无限次数并导致stackOverFlowError。

有什么建议吗?

1 个答案:

答案 0 :(得分:6)

我们遇到过类似的情况,这个解决方案基于:     自定义反序列化器用于在不使用类型属性

的情况下以多态方式解析JSON

让我们将多态类称为BaseResource(基类),SubResource1,SubResource2。

BaseResource具有注释以指定哪个CustomSerializer类

@JsonDeserialze(using=CustomDeserializer.class)
public class BaseResource{
......
}

所以在SubResource1和SubResource2上,我们通过使用JsonDeserialer.None.class添加注释以不使用CustomDeserialzer.class

@JsonDeserialze(using=JsonDeserialer.None.class)
public class SubResource1 extends BaseResource{
......
}

参考:http://www.robinhowlett.com/blog/2015/03/19/custom-jackson-polymorphic-deserialization-without-type-metadata/