我正在写一个库来动态序列化/反序列化Dart/Flutter中的任何对象(在思想上类似于Python的Pydantic)。然而,我发现不可能实现最后一个组件,动态类型转换。这是从JSON转换类型所必需的,比如List到List(或类似的)。类型是使用反射从对象中检索的。
下面是所需的实现(尽管据我所知,这在Dart中是不可能的)。
Map<String, Type> dynamicTypes = {"key": int };
// Regular casting would be "1" as int
int value = "1" as dynamicTypes["key"];
有没有什么变通的方法可以实现它?或者我已经走到了死胡同(因此没有其他动态序列化/反序列化包已经存在)。
2条答案
按热度按时间4uqofj5v1#
对这个问题进行更多的研究,在Dart的当前实现中,这似乎是不可能的,因为运行时反射被禁用,如官方文档中所引用的。
关于GitHub上对这一功能和相关包dart:mirror here的支持,目前正在进行讨论,但到目前为止,尽管有一些人希望实现这一功能,但它几乎不可能实现。
因此,唯一的选择是:
t3irkdon2#
您的问题没有说明
dynamicTypes
是如何构建的,或者它的密钥是如何导出的,所以可能有一个细节我还不清楚。但是像这样的事情呢?
或者,如果值为
dynamic
而不是字符串:或者更简洁地说: