Java 如何使用GSon处理异构列表

Java 如何使用GSon处理异构列表,java,gson,Java,Gson,我想储存像这样的东西 ImmutableList<Fruit> list = ImmutableList.of(new Orange(42), new Banana(43), new Apple("green"), new Apple("red")); 添加一个字段“type”和一个自定义反序列化程序可能就可以了,但在尝试之前,我想问问是否有更好的方法。如果不想使用自定义反序列化程序,可以使用一个同时包含两个字段的特定类。我知道我直接构建json类是为了满足json交换的需

我想储存像这样的东西

ImmutableList<Fruit> list =
    ImmutableList.of(new Orange(42), new Banana(43), new Apple("green"), new Apple("red"));

添加一个字段“type”和一个自定义反序列化程序可能就可以了,但在尝试之前,我想问问是否有更好的方法。

如果不想使用自定义反序列化程序,可以使用一个同时包含两个字段的特定类。我知道我直接构建json类是为了满足json交换的需要。因此,这些类不是我的主要业务对象模型之一,但管理起来更简单,而且隔离性也更好。对于问题的显示部分,我将实现一个很好的解决方案。然而,我的一些“水果”可能包含其他的,所以我需要其他的东西。也许这真的很简单,只需添加一个虚拟字段
$class
,该字段的值由序列化程序中的
getClass().getName()
获得,然后在反序列化程序中使用它?您可以这样做,或者尝试将一个不太异构的树与多功能对象混合(我的意思是使用比最小字段多一点的字段)为了保持json/gson的简单性。
[{"value":42},{"value":43},{"color":"green"},{"color":"red"}]