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

时间:2011-10-14 17:36:27

标签: java json jackson circular-dependency self-reference

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

[
  { "id":1, "friends":[2] },
  { "id":2, "friends":[1,3] },
  { "id":3, "friends":[] }
]

朋友的内容是列表中其他用户的ID。

是否有可能以某种方式使用Jackson使用数据绑定从JSON创建一个类似下面的Java类,或者我需要一个中间步骤吗?

public class User {
  private long userid;
  private List<User> friends;
// ... getters/setters

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

没有完全注释的方法,所以你需要自定义JsonSerializer / JsonDeserializer。杰克逊1.9增加two new features可能会有所帮助:

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

但是,我不是100%确定如何将这两个功能结合起来用于特定用例......