Java 使用Gson的序列化对象引用

Java 使用Gson的序列化对象引用,java,json,gson,Java,Json,Gson,我正在开发一个地图生成器应用程序。 它有公共汽车、火车、车站和站与站之间的线路。 所有这些数据都存储在一个名为“Map”的类中 我需要将我的Map实例存储到一个JSON文件中。我选择使用Gson。 这是我的地图、线路和车站课程: public class Map { private LinkedList<Station> stations; private LinkedList<Line> lines; // methods ... }

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

我需要将我的Map实例存储到一个JSON文件中。我选择使用Gson。 这是我的地图、线路和车站课程:

 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
}
公共类映射
{
私人链接列表站;
私有链接列表行;
//方法。。。
}
公共班级线
{
私有字符串名称;
私人链接列表站;
//方法
}
公营电台
{
私有整数;
私有字符串名称;
私人双纬度;
私人双经度;
私有字符串cityName;
//方法
}
我的问题是,我的所有对象都存储为独立对象(没有任何引用)。 正如你们所看到的,地图包含车站和线路。线路上有车站。
当我加载JSON并在map类中更改一个站点时,同一个站点不会更改,因为它没有通过引用链接。

看看这个站点。

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

另请看:


我不确定JSON的原始形式是否支持您想要的内容(并且您想要
序列化然后正确地反序列化整个对象图,而不仅仅是对象树)。
我猜JSON不支持这一点,但我不是100%确定(我自己也不需要它)。
在树中,每个对象只有一个父对象,因此没有问题。
在图形中,对象a和B可能都指向某个对象C。
那么现在如何序列化C?您是在A中(即序列化A时)还是在B中,或者
在A和B之外,然后让A和B以某种方式指向单个序列化的C?
还是只序列化C两次(一次在A中,一次在B中)?顺便说一句,是不是
XML也是这样吗?我想XML和JSON都不是为此而设计的。

这对我帮助很大。非常感谢。