flutter开发实战-jsontodart及 生成Dart Model类
flutter开发实战-jsontodart及 生成Dart Model类。
在开发中,经常遇到请求的数据Json需要转换成model类。这里记录一下Jsontodart生成Dart Model类的方案。
一、JSON生成Dart Model类
在开发中经常用到将json转成map或者list。通过json.decode() 可以方便 JSON 字符串转为 List/Map
如
{ "name": "Bruce", "age": 20}
转换成Map
Map<String, dynamic> user = json.decode(json);
在自定义类中经常将请求封装,最后将请求转换成Map通过Dio请求服务器。
class UserInfoReq { int? id; int? timestamp; UserInfoReq( {this.id, this.timestamp}); UserInfoReq.fromJson(Map<String, dynamic> json) { id = json['id']; timestamp = json['timestamp']; } Map<String, dynamic> toJson() { final Map<String, dynamic> data = new Map<String, dynamic>(); data['id'] = this.id; data['timestamp'] = this.timestamp; return data; }}
使用json_annotation、json_serializable、build_runner插件生产Json对应的Dart model
一、引入插件json_annotation、json_serializable、build_runner
在pubspec.yaml引入相应的插件json_annotation、json_serializable、build_runner
dependencies: flutter: sdk: flutter flutter_localizations: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 # JSON注解 json_annotation: ^4.8.0dev_dependencies: flutter_test: sdk: flutter # JSON转model json_serializable: ^6.6.1 build_runner: ^2.3.3
二、将Json转成Dart
在开发中经常用到Jsontodart,这里使用的是一下两个
https://javiercbk.github.io/json_to_dart/
https://caijinglong.github.io/json2dart/index_ch.html
将一下Json转成对应的类
{"name":"Bruce","age":20}
对应的dart类
import 'package:json_annotation/json_annotation.dart'; part 'user_info_dto.g.dart';() class UserInfoDto extends Object { (name: 'name') String name; (name: 'age') int age; UserInfoDto(this.name,this.age,); factory UserInfoDto.fromJson(Map<String, dynamic> class="lazy" data-srcJson) => _$UserInfoDtoFromJson(class="lazy" data-srcJson); Map<String, dynamic> toJson() => _$UserInfoDtoToJson(this);}
由于这里用到了json_annotation,需要使用命令生成’user_info_dto.g.dart’文件
通过在项目根目录下运行:
flutter packages pub run build_runner build
这触发了一次性构建,可以在需要时为我们的 Model 生成 json 序列化代码,它通过我们的源文件,找出需要生成 Model 类的源文件(包含@JsonSerializable 标注的)来生成对应的 .g.dart 文件。
三、小结
flutter开发实战-jsontodart及 生成Dart Model类。使用json_annotation、json_serializable、build_runner插件生产Json对应的Dart model。
学习记录,每天不停进步。
来源地址:https://blog.csdn.net/gloryFlow/article/details/131927545
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341