flutter JSON和序列化 采坑

flutter JSON和序列化

官网地址https://flutterchina.club/json/

我遇到的问题

字段太多时json的序列化和反序列化过于麻烦(属性太多,容易眼花和错漏)

官网解决方案

在这里插入图片描述

在这里插入图片描述

  1. 使用 dart:convert手动序列化JSON
    在这里插入图片描述
    现在,序列化逻辑移到了模型本身内部。采用这种新方法,我们可以非常容易地反序列化user。
    当下使用的就是这种方法。
  2. 使用代码生成库序列化JSON

使用json_serializable package包。 它是一个自动化的源代码生成器,可以为我们生成JSON序列化模板
3. 在项目中设置json_serializable,需要在pubspec.yaml引入json_serializable(注意版本),
在这里插入图片描述
在这里插入图片描述
4.以json_serializable的方式创建model类
//这是官网代码示例,项目根目录下运行***flutter packages pub run build_runner build***,我们可以在需要时为我们的model生成json序列化代码。 这触发了一次性构建,它通过我们的源文件,挑选相关的并为它们生成必要的序列化代码。
import ‘package:json_annotation/json_annotation.dart’;

// user.g.dart 将在我们运行生成命令后自动生成
part ‘user.g.dart’;

///这个标注是告诉生成器,这个类是需要生成Model类的
@JsonSerializable()

class User{
User(this.name, this.email);

String name;
String email;
//不同的类使用不同的mixin即可
factory User.fromJson(Map<String, dynamic> json) => _KaTeX parse error: Expected group after '_' at position 56: …c> toJson() => _̲UserToJson(this);
}

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述](https://img-blog.csdnimg.cn/20210322143258749.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDU2NDUzOA==,size_16,color_FFFFFF,t_70)
在运行命令后出现如下结果:解决方案是:

//清除之前生成的文件,如果直接运行下面的不行。可以先尝试运行这个
flutter packages pub run build_runner clean
//可以直接运行这个
flutter packages pub run build_runner build --delete-conflicting-outputs
然后就可以生成新的生成新的xxxx.g.dart

之前目录在这里插入图片描述
自动生成后的目录

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值