我正在开发地图构建器应用程序。 它有公共汽车,火车,车站和车站之间的线路。 所有这些数据都存储在一个名为“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并更改地图类中的工作站时,同一工作站不会更改,因为它没有通过引用链接。
答案 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都不是为此设计的。