Java 使用Jackson反序列化自引用对象

Java 使用Jackson反序列化自引用对象,java,json,jackson,circular-dependency,self-reference,Java,Json,Jackson,Circular Dependency,Self Reference,我有一个类似这样的JSON字符串(简化): [ {“id”:1,“朋友”:[2]}, {“id”:2,“朋友”:[1,3]}, {“id”:3,“朋友”:[]} ] 好友的内容是列表中其他用户的ID 是否可以通过Jackson的数据绑定从JSON创建一个类似下面的Java类,或者我需要一个中间步骤 公共类用户{ 私有长用户ID; 私人名单朋友; //…能手/二传手 感谢您的帮助。没有完全注释性的方法来完成此操作,因此您需要自定义JsonSerializer/JsonDeserializer。

我有一个类似这样的JSON字符串(简化):

[
{“id”:1,“朋友”:[2]},
{“id”:2,“朋友”:[1,3]},
{“id”:3,“朋友”:[]}
]
好友的内容是列表中其他用户的ID

是否可以通过Jackson的数据绑定从JSON创建一个类似下面的Java类,或者我需要一个中间步骤

公共类用户{
私有长用户ID;
私人名单朋友;
//…能手/二传手

感谢您的帮助。

没有完全注释性的方法来完成此操作,因此您需要自定义JsonSerializer/JsonDeserializer。Jackson 1.9添加了以下内容:

  • ValueInstantiators,所以您可以为反序列化程序添加构造函数,以便将基本整数转换为POJO
  • 值注入,以便可以传递其他上下文对象(您需要找到已反序列化器对象的ID,然后从整数映射到实例)

但是,我不能100%确定如何将这两个特性结合到特定的用例中…

谢谢,我将对此进行研究。