我一直在互联网上寻找一个好的 Java 到 Json 库,它可以保留对 java 对象中对象的引用。我一直在关注的两个库是:
- jackson
- 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,然后再次转换回来,同时保持 saveMe
对象上的 previous
和 next
指向同一个 User
对象。
我已经尝试使用 Gson 和 Jackson 进行此操作,但尚未找到正确执行此操作的方法。当我将 json 转换回 Java 对象时,该对象在我的 saveMe
对象中有两个 User
对象的副本,而不仅仅是一个引用。
编辑:
感谢@dnault 和@StaxMan 的回复。使用 @JsonIdentityInfo 的文档链接非常好且简单。 Gson 有没有办法做类似的事情?我对 Gson 比较熟悉,并且已经在我当前的代码中实现了它。我确信 Jackson 方式能够满足我的需求,但我只是想知道 Gson 中是否也有办法做到这一点。
最佳答案
Jackson 可以使用 @JsonIdentityInfo
注释来做到这一点;这是启用 id/引用跟踪所必需的,因为它有点昂贵,而且还因为有多种方法可以生成要使用的对象 id。
上面评论中给出的链接(http://wiki.fasterxml.com/JacksonFeatureObjectIdentity)应该有帮助;以及this entry .
关于Java 到 Json 保留引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20254334/