(De) Сериализует абстрактный класс с помощью Gson - PullRequest
0 голосов
/ 15 декабря 2018

Так что в настоящее время я пытаюсь найти способ (де) сериализовать мои данные, чтобы Карта могла содержать экземпляры 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"
      }
    }
  }
}
}
...