我一直在寻找互联网,试图找到一个优秀的Java to Json库,它可以保留对java对象内对象的引用。我一直关注的两个库是:
以下是我想要维护的一些简化代码:
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
对象上的next
和saveMe
指向同一个User
对象
我曾与Gson和Jackson一起尝试过,但还没有找到妥善解决这个问题的方法。当我将json转换回Java对象时,该对象在User
对象中有saveMe
个对象的两个副本,而不是仅仅一个引用。
修改
感谢@dnault和@StaxMan的回复。使用@JsonIdentityInfo的文档链接非常简单明了。有没有办法在Gson做类似的事情?我对Gson更熟悉了,并且已经在我当前的代码中实现了它。我确信杰克逊的方式可以满足我的需求,但我只是想知道是否有办法在Gson中做到这一点。
答案 0 :(得分:0)
杰克逊可以使用@JsonIdentityInfo
注释执行此操作;这是启用id / reference跟踪所必需的,因为它有点昂贵,而且还有多种方法可以生成要使用的对象id。
上面评论中给出的链接(http://wiki.fasterxml.com/JacksonFeatureObjectIdentity)应该有所帮助;以及this entry。