使用Gson进行序列化对象引用

时间:2013-12-28 11:15:44

标签: java json gson

我正在开发地图构建器应用程序。 它有公共汽车,火车,车站和车站之间的线路。 所有这些数据都存储在一个名为“Map”的类中。

我需要将Map实例存储到JSON文件中。我选择使用Gson。 这是我的Map,Line和Station课程:

 public class Map
 {
    private LinkedList<Station> stations;
    private LinkedList<Line> lines;

    // methods ...
 }

public class Line
{

    private String name;
    private LinkedList<Station> stations;

    // methods
}

public class Station
{

    private int number;
    private String name;
    private double latitude;
    private double longitude;
    private String cityName;

        // methods
}

我的问题是我的所有对象都存储为独立对象(没有任何引用)。 如您所见,地图包含电台和线路。并且线包含站。 当我加载JSON并更改地图类中的工作站时,同一工作站不会更改,因为它没有通过引用链接。

1 个答案:

答案 0 :(得分:1)

看看这个。

http://code.google.com/p/json-io/

查看它是否保留了“对象图”的语义。

另见:

http://benjamin.smedbergs.us/blog/2008-08-21/json-serialization-of-interconnected-object-graphs/

http://www.jspon.org/#JSPON%20Core%20Spec

我不确定原始形式的JSON是否支持您想要的(并且您希望如此) 序列化然后正确反序列化整个对象图,而不仅仅是对象树 我猜JSON不支持,但我不是100%肯定(我自己也不需要) 在一棵树中,每个对象只有一个父对象,所以你没有问题 在图形中,您可以使对象A和B都指向某个对象C.
那么你现在如何序列化C?你是在A(即序列化A)或B,或者在A和B之外做的,然后让A和B以某种方式指向那个单一的序列化的C?或者你只是序列化C两次(一次在A中,一次在B中)?顺便问一下,不是吗 与XML相同?我想XML和JSON都不是为此设计的。