flutter 序列化 jsonEncode jsonDecode

flutter 序列化 jsonEncode jsonDecodejson_encode是将数值转换成json格式,json_decode()函数将json数据转换成数组flutter进行数据传递需要进行序列号进行编码解码要序列化一个ServiceInfoModel,我们只是将该ServiceInfoModel对象传递给该JSON.encode方法。我们不需要手动调用toJson这个方法,因为JSON.encode已经为我们做了。jsonEncodejson编码过程varvehicleCarModel=Uri.encodeComp..

大家好,又见面了,我是你们的朋友全栈君。

json_encode是将数值转换成json 格式,json_decode()函数将json数据转换成数组 

flutter 进行数据传递需要进行序列号 进行编码 解码

要序列化一个ServiceInfoModel ,我们只是将该ServiceInfoModel 对象传递给该JSON.encode方法。我们不需要手动调用toJson这个方法,因为JSON.encode已经为我们做了。

一个usebean对象

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

  int id;
  String name;

//jsonDecode(sting) ->就是fromJson过程 转成结果为map
  User.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    name = json['name'];
  }

//jsonEncode(user) ->就是tojson过程
  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['name'] = this.name;
    return data;
  }
}

 进行jsonencode 和jsondecode进行编码解码

  /// 用户登录。简单起见,返回User
  Future<User> login(String mobile, String sms) async {
 
    User user = User(1, '程序员磊哥');
    print('登录成功: $user');
    var data = jsonEncode(user);
    print("jsonEncode转换的结果对象转为json过程" + data);
    Map user2 = jsonDecode(data.toString());
    print("jsonDecode转换的结果为map并得到map的id值为" + user2["id"].toString());
    User user3 = User.fromJson(jsonDecode(data.toString()));
    print("jsonDecode转换的结果为map再用 User.fromJson(string)转为对象use" + user3.name);
    return user;
  }

 解码 编码后运行结果


I/flutter (17450): jsonEncode转换的结果对象转为json过程{"id":1,"name":"程序员磊哥"}
I/flutter (17450): jsonDecode转换的结果为map并得到map的id值为1
I/flutter (17450): jsonDecode转换的结果为map再用 User.fromJson(string)转为对象use程序员磊哥
I/flutter (17450): 加载首页数据...
I/flutter (17450): 加载首页数据完成

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160614.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月17日 下午7:00
下一篇 2022年7月17日 下午7:00


相关推荐

  • Spring事务传播机制&隔离级别

    Spring事务传播机制&隔离级别Spring 事务传播机制 amp 隔离级别一 Propagation 事务的传播属性 Propagation key 属性确定代理应该给哪个方法增加事务行为 这样的属性最重要的部份是传播行为 有以下选项可供使用 PROPAGATION REQUIRED 支持当前事务 如果当前没有事务 就新建一个事务 这是最常见的选择 PROPAGATION SUPPORTS 支持

    2026年3月17日
    2
  • Pycharm导入模块失败原因

    Pycharm导入模块失败原因最近我在学习 Python 函数过程中出现了导入文件失败的问题 困扰了我好几天 我 PC 端下载了两个版本的 python 环境 Python2 7 和 Python3 8 应该是我的 Python3 8 包有点问题 所以导入文件失败 我试着换成了 Python2 7 环境 这个问题就解决啦 为了解决这个问题 我也在网上查询了好多 在这里也跟大家分享一下哈 pycharm 中搜索包时都是从根目录查找 所以有时文件多了就会混乱 需要把当前文件夹指定为 sorce 目录即可 具体操作如下

    2026年3月19日
    2
  • Android原生系统真的那么好用吗?安卓原生系统吊打其他系统,因为有Google-Play

    Android原生系统真的那么好用吗?安卓原生系统吊打其他系统,因为有Google-PlayAndroid原生系统真的那么好用吗?这种问题当然是否定的。原生Android(指的是直接基于AOSP构建的而非手机厂商出厂固件修改的第三方ROM,但包括Nexus/Pixel或其它被Google直接支持的手机的可能是闭源的出厂固件)对于适合的人而言是无可替代的,当前几乎无任何定制ROM就与之相比。但是对于更多的中国用户而言,他们从一开始就使用的是定制系统,已经习惯了那一套逻辑和对系统的认知,所以定制系统是更好的选择(但您们最好祈祷一下手机厂商的ROM不要越来越不要脸)。当然.

    2022年6月19日
    83
  • 装了固态硬盘找不到,新安装固态硬盘找不到

    装了固态硬盘找不到,新安装固态硬盘找不到

    2026年3月14日
    3
  • 在CentOS上安装phpMyAdmin的教程

    在CentOS上安装phpMyAdmin的教程前提在CentOS上安装phpMyAdmin,你第一步需要架设一台Web服务器(如Apache或nginx),安装好MySQL/MariaDB数据库和PHP。根据你的偏好和需求,你可以从LAMP和LEMP中选择一种安装。另一个要求是允许在你的CentOS上安装EPEL库。如果你还没设置过请猛戳这里。在CentOS6或7上安装phpMyAdmin一旦你设置了EPEL库,你就能轻松地用以下命令安装ph

    2022年5月26日
    32
  • 腾讯课堂视频下载_电脑腾讯会议不支持虚拟背景

    腾讯课堂视频下载_电脑腾讯会议不支持虚拟背景如果想把腾讯课堂里的视频下载到本地,这里提供一个方法。原理就是通过提取网页中的视频链接,进行下载。提取网页中的视频链接方法有很多。这里介绍通过浏览器插件的方式。1.我是在firefox附加组件里搜索“视频下载”找到的一款插件。flashvideodownloader,安装即可2.打开腾讯课堂网页版,播放想要下载的视频。浏览器会缓存你播放的视频,一般是5分钟一个。3.打开浏览器插件,它就会显示…

    2025年8月15日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号