欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > Flutter_学习记录_json自动解析转模型

Flutter_学习记录_json自动解析转模型

2025/7/7 11:57:14 来源:https://blog.csdn.net/lyz0925/article/details/146039487  浏览:    关键词:Flutter_学习记录_json自动解析转模型

对于App开发,从网络请求回来的json数据要转成模型,如果手动转的话,比较麻烦,可以用json_annotation库来实现。具体步骤如下~

1. 引入三方库

json自动转模型,需要用到三个库:

  • json_annotation
  • json_serializable
  • build_runner

引入库的步骤如下:

在这里插入图片描述

2. 创建模型

先创建一个文件,例如文件名为image.dart, 如下图:
在这里插入图片描述
然后在image.dart文件中,新建一个模型,例如ImageEntiry, 添加对应的属性,如下图:
在这里插入图片描述

3. 引入@JsonSerializable() 的注解

在类型前面,添加@JsonSerializable() 的注解,如下图:
在这里插入图片描述

4. 提前导入自动解析会生成的文件 part 'xxx.g.dart'

因为 自动生成字典转模型 或者 模型转字典的代码,是三方库生成的,会自动放到一个新的文件里面,文件的格式就是xx.g.dart, 其中xx 表示模型对应的文件的名字。例如模型ImageEntiryimage.dart, 那么 自动生成的文件就是image.g.dart, 所以,需要先提前导入这个文件,不然会自动生成失败。如下图:
在这里插入图片描述

5. 在命令行中,执行自动生成json转模型的命令flutter packages pub run build_runner build

在命令行中,执行 flutter packages pub run build_runner build, 等一会儿,如果执行成功的话,会在目录下,看到自动生成的xx.g.dart的文件,如下图:
在这里插入图片描述

6. 在模型类中,添加fromJosntoJson的方法

自动生成的代码中,
方法名带fromJson的表示自动生成的 json转模型的方法;
方法名带toJson的表示自动生成的模型转json的方法。

在模型类中,添加fromJosntoJson的方法,使用如下:

// 字典转模型factory ImageEntiry.fromJson(Map<String, dynamic> json) => _$ImageEntiryFromJson(json);// 模型转字典Map<String, dynamic> toJson() => _$ImageEntiryToJson(this);

7. 完整的代码实例


import 'package:json_annotation/json_annotation.dart';
part 'image.g.dart';()
class ImageEntiry {String url;int width;int height;int size;ImageEntiry({this.url = "",this.width = 0,this.height = 0,this.size = 0});// 字典转模型factory ImageEntiry.fromJson(Map<String, dynamic> json) => _$ImageEntiryFromJson(json);// 模型转字典Map<String, dynamic> toJson() => _$ImageEntiryToJson(this);double get ratio {if ( width != 0 && height != 0) {return width / height;} else {return 16/9;}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词