【发布时间】:2021-10-18 08:35:16
【问题描述】:
假设我有 3 个数据类(实际上可能更多)。 A 类 或 B 类应使用数据类型标识符包装在 Wrap 类中。这将允许在应用程序内部对 json 接口提供的任何数据类型使用相同的过程。
class Wrap{
int id;
List<dynamic> dataSet;
Wrap({required this.id, required this.dataSet});
}
class A{
int a=0;
A({this.a});
}
class B{
bool b=true;
B({this.b});
}
我的目标是使用映射 getDataType = {0: A, 1: B}; 然后解析嵌套的 Json
dataSets: List<dynamic>.from(json["dataSets"].map((d) => getDataType[json["id"].fromJson(d)).toList();
但不幸的是,当尝试从包含类型的变量访问类方法时,这已经失败了
class A{
int i=0; A({i});
factory A.test(int i) => A(2*i);
}
main() {
final t = A;
final x = t.test(2);
}
任何有聪明想法的人如何实现这一目标?
这种非正统数据结构背后的原因是:我在业务逻辑层有一个数据管理器,它根据某些事件触发不同的 UI,来自不同的逻辑。然后,管理器获取 UI 的特定数据。为了简化这一点,应使用具有相同功能的相同存储库。但是,存储库函数根据 UI 使用不同的数据库表。
更新:最基本的 json 示例:
{
"id": 0,
"data": [
{
"problemId": 0,
"level": 2
}
]
}
【问题讨论】:
-
你能添加你要解析的模板json吗
-
作为问题的更新完成。谢谢
-
查看类似问题的答案:stackoverflow.com/a/57661860/6704033
-
那个不同,它有一个不变的数据结构——除非我错过了什么