有一个名为GraphAdapterBuilder的Gson扩展,它可以序列化包含循环引用的对象。这是来自相应测试用例的非常简化的示例:
Roshambo rock = new Roshambo("ROCK");Roshambo scissors = new Roshambo("SCISSORS");Roshambo paper = new Roshambo("PAPER");rock.beats = scissors;scissors.beats = paper;paper.beats = rock;GsonBuilder gsonBuilder = new GsonBuilder();new GraphAdapterBuilder() .addType(Roshambo.class) .registerOn(gsonBuilder);Gson gson = gsonBuilder.create();System.out.println(gson.toJson(rock));打印:
{ '0x1': {'name': 'ROCK', 'beats': '0x2'}, '0x2': {'name': 'SCISSORS', 'beats': '0x3'}, '0x3': {'name': 'PAPER', 'beats': '0x1'}}注意,GraphAdapterBuilder类 不 包含在gson.jar中。如果要使用它,则必须手动将其复制到项目中。



