如何使用Gson反序列化具有多态子对象的Json

时间:2018-02-01 08:47:14

标签: java json serialization gson

当我设计一个要序列化和反序列化的类时,我遇到了问题。

这是问题,我有一个班级

class Thing {
  int a;
  String b;
  String type;
  Type typeinfo;
}

基本上Type是一个抽象类,如

abstract class Type {
 //nothing here
}

我有一些实现

class CarType extends Type {
  int x;
  int y;
}

class TruckType extends Type {
  list<Integer> listOfInt;
}

String type设置为"CarType""TruckType"甚至其他人,我可以知道typeinfo

的实际类型

使用Gson序列化它是好的但是如何反序列化json字符串?

修改

以下是Json String

的示例
case1:
{
 "a" : 1,
 "b" : "aaa",
 "type": "car",
 "typeinfo": {
    "x" : 10,
    "y" : 100
  }
}

case2: 
{ 
  "a" : 1,
  "b" : "aaa",
 "type": "truck",
 "typeinfo": {
   "listOfInt" : [1, 2, 3]
 }
}

只是一个快速的模拟,但我想这个想法应该是清楚的,问题是我不想把“类型”放入只假设信息的typeinfo。

0 个答案:

没有答案