json转object_【Flutter】Json数据和Model之间的转换
说明在开发中,服务端通常返回Json数据,我们需要将Json数据转模型对象来使用。一般情况下,我们会使用一些第三方库来动态转化Model,但是Flutter中没有像Java的Gson/Jackson这类Json序列化类库,因为Flutter中禁用运行时反射。官方解释是运行时反射会干扰Dart的tree shaking,使用tree shaking可以在release版中去除未使用的代码,...

说明
在开发中,服务端通常返回Json数据,我们需要将Json数据转模型对象来使用。
一般情况下,我们会使用一些第三方库来动态转化Model,但是Flutter中没有像Java的Gson/Jackson这类Json序列化类库,因为Flutter中禁用运行时反射。
官方解释是运行时反射会干扰Dart的tree shaking,使用tree shaking可以在release版中去除未使用的代码,这可以显著优化应用程序的大小。
由于反射会默认应用到所有代码,因此tree shaking会很难工作,因为在启用反射时很难知道哪些代码未被使用,因此冗余代码很难剥离,所以Flutter中禁用了Dart的反射功能,而正因如此也就无法实现动态转化Model的功能。
json数据和model之间的转换-手动转换
json数据:
{
"name": "loaderman",
"age": 18
}
定义Model类:
class User {
final String name;
final int age;
User({this.name, this.age});
@override
String toString() {
return 'name:$name,age:$age';
}
}
测试解析:
String jsonStr = "{\"name\":\"loaderman\",\"age\":18}";
var jsonMap = json.decode(jsonStr);
var user =
User(name: jsonMap['name'], age: jsonMap['age']);
print('$user');
控制台日志查看:
>> name:loaderman,age:18
这样一个简单的json转换就完成了
特别说明:
-
json_decode( ) :json 转 对象/数组 通常网路请求后的数据用此方法 转为我们需要的定义的对象 当第二个参数为true返回 array ,默认是false返回object。
-
json_encode( ):对象/数组 转 json 成功返回 json 编码的 string ,失败返回 false 。
使用第三方工具生成
1.在线生成网站:
https://javiercbk.github.io/json_to_dart/

2.JsonToDart 插件【推荐】
在 Android Studio 中安装 JsonToDart 插件,
a.打开 Preferences(Mac)或者 Setting(Window),
b.选择 Plugins,搜索 JsonToDart

点击 Install(上图已经安装),安装完成后重启即可
选定目录,点击右键,选择 New->Json to Dart

将json字符串复制进去,填写类明后,点击Generate按钮即可

附快捷键:
Windows:ALT + Shift + D
Mac:Option + Shift + D
完
码上加油站
一起来加油
长按扫码关注
记得点个赞和在看哦!
更多推荐



所有评论(0)