22.JSON解析和复杂数据模型转换技巧

json转Model类

创建model文件夹,在里面新建category.dart类

4b8229407f282e50065231f68fdcad8e.png

主要根据这个json来分析我们要做成类的样子

json数据

a3c0043ed9eef7e904f5fc5f776409db.png
29222cd38ca4af9ce844d8089f05a0cd.png
class CategoryBigModel{  String mallCategoryId;//类别编号  String mallCategoryName;//类别名称}
d1fbb2e09468d99b57044e33163e957a.png

comments这个字段都是null值。

16585f0043e645a1ccf98c19bf65855c.png

所以在创建了的时候 我们直接用null来表示

f2fe54d7fd9fe77f0e81c3a81eb73952.png

我们上面只做了一个模型类:CategoryBigModel

在json里面是有多个CategoryBigModel类的。就是一个list的数据。CategoryBigListModel

db575e03ef6c0ffeec457f1900f7a4ad.png

使用我们定义的model,和model的list集合

d627ff8b335d986ed337b43c47ebcff9.png

我们要输出大类的名称

d5766e8f4426dd08ee14d17e0e45a89d.png

输出我们的类别

3fbd8e7298be6ad4a8c4f76356f47707.png

快速生成我们的dart类,数据模型

https://javiercbk.github.io/json_to_dart/

把所有的json复制过来,自动生成类

3d07abf49779549036316322c816fd46.png

最终代码

category.dart

category_page.dart

class CategoryBigModel{  String mallCategoryId;//类别编号  String mallCategoryName;//类别名称  List bxMallSubDto;//不知道具体模型就用dynamic类型  Null comments;  String image;  //构造方法  CategoryBigModel({    this.mallCategoryId,    this.mallCategoryName,    this.bxMallSubDto,    this.comments,    this.image  });  //工厂类的构造方法,就是我常用的实例化对象模式,好处是我们调用这个类的时候不用再使用new关键字了  //相当于java里面的多态,用起来和我们的静态方法是一样的  factory CategoryBigModel.formJson(dynamic json){    return CategoryBigModel(      mallCategoryId:json['mallCategoryId'],      mallCategoryName:json['mallCategoryName'],      bxMallSubDto:json['bxMallSubDto'],      comments:json['comments'],      image:json['image']    );  }}//列表的modelclass CategoryBigListModel{  List data;  CategoryBigListModel(this.data);  factory CategoryBigListModel.fromJson(List json){    return CategoryBigListModel(      json.map((i)=>CategoryBigModel.formJson((i))).toList()    );  }}
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐