Java到Json Preserve References

时间:2013-11-27 22:31:17

标签: java json jackson

我一直在寻找互联网,试图找到一个优秀的Java to Json库,它可以保留对java对象内对象的引用。我一直关注的两个库是:

  • 杰克逊
  • GSON

以下是我想要维护的一些简化代码:

public class SaveMe
{
    public User previous = null;
    public User next = null;
}

public class User
{
    public int id;
    public String name;
    public User(int id, String name)
    {
        this.id = id;
        this.name = name;
    }
}

采取类似的措辞:

SaveMe saveMe = new SaveMe();
User previousAndNext = new User();
saveMe.previous = previousAndNext;
saveMe.next = previousAndNext;

在这种情况下,我有一个saveMe对象,前一个和下一个对象指向同一个对象。我想找到一种方法将对象转换为Json,然后再返回,同时保持previous对象上的nextsaveMe指向同一个User对象

我曾与Gson和Jackson一起尝试过,但还没有找到妥善解决这个问题的方法。当我将json转换回Java对象时,该对象在User对象中有saveMe个对象的两个副本,而不是仅仅一个引用。

修改

感谢@dnault和@StaxMan的回复。使用@JsonIdentityInfo的文档链接非常简单明了。有没有办法在Gson做类似的事情?我对Gson更熟悉了,并且已经在我当前的代码中实现了它。我确信杰克逊的方式可以满足我的需求,但我只是想知道是否有办法在Gson中做到这一点。

1 个答案:

答案 0 :(得分:0)

杰克逊可以使用@JsonIdentityInfo注释执行此操作;这是启用id / reference跟踪所必需的,因为它有点昂贵,而且还有多种方法可以生成要使用的对象id。

上面评论中给出的链接(http://wiki.fasterxml.com/JacksonFeatureObjectIdentity)应该有所帮助;以及this entry