首页 > 解决方案 > (De)用 Gson 序列化抽象类

问题描述

所以目前,我正在尝试找到一种方法来(反)序列化我的数据,以便地图能够包含 Wagon 的实例而不仅仅是 Component。有没有办法用我当前的对象结构来做到这一点?

class Standplaats {
   String id;
   Map<String, Trein> treinen;
}

class Trein {
   String id;
   Map<String, Component> componenten;
}

abstract class Component {
   String id;
}

class Wagon extends Component {
   int seats;
}

//serializing
Gson gson = new GsonBuilder().setPrettyPrinting().create();
List<Standplaats> list = new ArrayList<>(standplaatsen.size());
standplaatsen.forEach((id, standplaats) -> list.add(standplaats));
String toJson = gson.toJson(list);

//deserializing
Standplaats[] standplaatsen = GSON.fromJson(br, Standplaats[].class);

json 目前看起来像这样:

{
"id": "standplaats1",
"treinen": {
  "trein1": {
    "id": "trein1",
    "componenten": {
      "wagon1": {
        "seats": 20,
        "id": "wagon1"
      }
    }
  }
}
}

标签: javapolymorphismgson

解决方案


推荐阅读