Flutter 从设计之初就不支持的反射,理由如下:
运行时反射破坏了类的封装性和安全性,会带来安全风险。就在前段时间,Fastjson 框架就爆出了一个巨大的安全漏洞。这个漏洞使得精心构造的字符串文本,可以在反序列化时让服务器执行任意代码,直接导致业务机器被远程控制、内网渗透、窃取敏感信息等操作。
运行时反射会增加二进制文件大小。因为搞不清楚哪些代码可能会在运行时用到,因此使用反射后,会默认使用所有代码构建应用程序,这就导致编译器无法优化编译期间未使用的代码,应用安装包体积无法进一步压缩,这对于自带 Dart 虚拟机的 Flutter 应用程序是难以接受的。
反射给开发者编程带来了方便,但也带来了很多难以解决的新问题,因此 Flutter 并不支持反射
因此我们老老实实的手动解析,当然也有好的工具来自动生成。
1 知道有json字符串的,想变成dart
https://www.devio.org/io/tools/json-to-dart/
或
https://javiercbk.github.io/json_to_dart/
HomeRes.fromJson(Map<String, dynamic> json) {
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
errorCode = json['errorCode'];
errorMsg = json['errorMsg'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic>