java - (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"
}
}
}
}
}
解决方案
推荐阅读
- node.js - Firebase 函数部署问题:在 %RESOURCE_DIR% 中找不到 package.json
- mql4 - 如何在 MQL4 中获取历史柱线的 OHLC 价格?
- vba - 继续循环且未在最后一条记录处结束的邮件合并脚本
- ruby-on-rails - 使控制器外的 caches_action 无效
- android - MediaStyle 通知无法正常工作
- php - 数组循环(循环计数大于数组索引)
- python - TypeError:“FirefoxWebElement”对象不可迭代
- python - 检查变量是类型的实例还是无
- entity-framework-6 - 确保提供程序已在应用程序配置文件的“entityFramework”部分中注册
- javascript - PHP对象数组到javascript变量