gpt4 book ai didi

java - 使用 Gson 的序列化对象引用

转载 作者:行者123 更新时间:2023-11-30 11:24:09 25 4
gpt4 key购买 nike

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

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

 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
}

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

最佳答案

看看这个。

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 都不是为此设计的。

关于java - 使用 Gson 的序列化对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20813880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com