Flutter Json数据转为和自动生成模板代码

使用json_serializable插件生成模板代码

1.添加依赖库

打开跟目录pubspec.yaml文件添加依赖库:

dependencies:json_annotation: ^4.4.0//注解依赖
dev_dependencies:json_serializable: ^6.1.4//json格式化build_runner: ^1.6.1

2.利用json生成模板代码可以使用网页https://caijinglong.github.io/json2dart/index.html

import 'package:json_annotation/json_annotation.dart';//这个名字一定要跟模板代码的文件名一致
part 'category_mode.g.dart';@JsonSerializable()
class CategoryBean extends Object {@JsonKey(name: 'categories')List<Categories> categories;@JsonKey(name: 'message')String message;CategoryBean(this.categories,this.message,);factory CategoryBean.fromJson(Map<String, dynamic> srcJson) => _$CategoriesBeanFromJson(srcJson);Map<String, dynamic> toJson() => _$CategoriesBeanToJson(this);}@JsonSerializable()
class Categories extends Object {@JsonKey(name: 'category_id')int categoryId;@JsonKey(name: 'image')String image;@JsonKey(name: 'parent_id')int parentId;@JsonKey(name: 'name')String name;@JsonKey(name: 'original_image')String originalImage;@JsonKey(name: 'children')List<Children> children;Categories(this.categoryId,this.image,this.parentId,this.name,this.originalImage,this.children,);factory Categories.fromJson(Map<String, dynamic> srcJson) => _$CategoriesFromJson(srcJson);Map<String, dynamic> toJson() => _$CategoriesToJson(this);}@JsonSerializable()
class Children extends Object {@JsonKey(name: 'category_id')int categoryId;@JsonKey(name: 'image')String image;@JsonKey(name: 'parent_id')int parentId;@JsonKey(name: 'name')String name;@JsonKey(name: 'original_image')String originalImage;@JsonKey(name: 'children')List<dynamic> children;Children(this.categoryId,this.image,this.parentId,this.name,this.originalImage,this.children,);factory Children.fromJson(Map<String, dynamic> srcJson) => _$ChildrenFromJson(srcJson);Map<String, dynamic> toJson() => _$ChildrenToJson(this);}

3.在运行打开Terminal窗口运行命令

 flutter packages pub run build_runner build

4.等待运行成功后会自动帮你新建一个刚刚模板代码category_mode.g.dart的category_mode.g.dart文件

在这里插入图片描述

使用实例:

 final data = <Categories>[];Future<void> call() => get(Uri.parse(ServiceUrl.category)).then((value) {Map<String, dynamic> dataMap = json.decode(value.body);var bean = CategoryBean.fromJson(dataMap);data.addAll(bean.categories);});


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部