Flutter(九)Json序列化与反序列化(转Model)
在日常开发中JSON的序列化与反序列化是一个常见的操作;而Dart语言不支持反射,运行时反射会影响Dart的tree shaking(摇树优化),tree shaking可以“抖掉”不需要使用的代码,显著优化 App 的体积,所以Flutter中没有类似Gson这样的Json库,处理方法相比Kotlin或者Swift更为复杂和繁琐。
方式一: dart:convert (不推荐)
- Flutter 有一个内置的 dart:convert 的库,这个库包含了一个简单的 JSON 编码器和解码器。
- 使用
fromJson和toJson实现序列化和反序列化 - 全手写代码,在多人协作的团队中不建议使用
- 官方文档
示例代码:
class User {
final String name;
final String email;
User(this.name, this.email);
User.fromJson(Map<String, dynamic> json)
: name = json['name'],
email = json['email'];
Map<String, dynamic> toJson() => {
'name': name,
'email': email,
};
}
方式二:json_serializable
- Flutter官方提供了一个自动化源代码生成器
json_serializable来生成 JSON 序列化数据模板 - 依然需要大量的手写代码和编写映射逻辑,比方式一友好,但依然存在多人协作难以维护的问题。
方式三:Android Studio插件 (推荐)
- 使用IDEA插件可以免去繁琐的配置和代码编写工作
- 保证生成的代码的一致性,并降低维护难度
- 适合多人协作
一、FlutterJsonBeanFactory(Only Null Safety)
- 官方网址
- 下载量:283k
使用方法
1、安装插件
搜索flutter,第二个插件就是。

2、在开发文件夹,右键选择JsonToDartBeanAction

3、根据页面提示填写信息

生成的代码:
import 'package:flutter_demo_library/generated/json/base/json_field.dart';
import 'package:flutter_demo_library/generated/json/user_model_entity.g.dart';
import 'dart:convert';
@JsonSerializable()
class UserModelEntity {
int? id;
String? name;
UserModelEntity();
factory UserModelEntity.fromJson(Map<String, dynamic> json) => $UserModelEntityFromJson(json);
Map<String, dynamic> toJson() => $UserModelEntityToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
还会自动生成相关文件:

4、修改后缀名
如果不需要Entiry做为后缀名,可以在AS的设置中修改:

5、字段维护
如果修改了entiry中的字段,只需在entiry文件中使用快捷键alt + j或者option + j,插件会自动重新生成文件
二、JsonToDart
- 官方网址
- 141k
- 下载量
使用方法与FlutterJsonBeanFactory,可以访问官网查看使用方法,这里不再介绍
Flutter(九)Json序列化与反序列化(转Model)的更多相关文章
- Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解
Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全 Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...
- Newtonsoft.Json 序列化和反序列化 时间格式
From : http://www.cnblogs.com/litian/p/3870975.html 1.JSON序列化 string JsonStr= JsonConvert.SerializeO ...
- Newtonsoft.Json 序列化和反序列化 时间格式 [转]
1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg: A a=new A(); a.Name="Elain ...
- windows phone8.1:Xml,Json序列化和反序列化
原文:windows phone8.1:Xml,Json序列化和反序列化 小梦本例主要实现以下四点内容: 将Car对象序列化为xml 将Car对象序列化为Json 将xml反序列化为Car对象 将js ...
- [转]Newtonsoft.Json 序列化和反序列化 时间格式
本文转自:http://www.cnblogs.com/litian/p/3870975.html 1.JSON序列化 string JsonStr= JsonConvert.SerializeObj ...
- Newtonsoft.Json 序列化和反序列化 以及时间格式
1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg: A a=new A(); a.Name="Elain ...
- 几种常用的json序列化和反序列化工具介绍
一.前言 Json序列化和反序列化工作中会时常用到,也是目前数据交互的常用格式,Rest风格的接口加上json格式的数据交互,真的是天作之合. 目前Json字符与Json对象的相互转换方式有很多,接下 ...
- 在net中json序列化与反序列化 面向对象六大原则 (第一篇) 一步一步带你了解linq to Object 10分钟浅谈泛型协变与逆变
在net中json序列化与反序列化 准备好饮料,我们一起来玩玩JSON,什么是Json:一种数据表示形式,JSON:JavaScript Object Notation对象表示法 Json语法规则 ...
- Json序列化与反序列化(对象与Json字符串的转换)--C#
public class JsonHelper { #region Json序列化与反序列化 /// <summary> /// 将json转化为对象 /// (需要提前构造好结构一致的M ...
- DotNet的JSON序列化与反序列化
JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...
随机推荐
- JVM简明笔记1:JVM 概述
什么是JVM JVM 即 Java Virtual Machine,中文名为 Java虚拟机. 一般情况下 C/C++ 程序,编译成二进制文件后,就可以直接执行了: Java 需要使用 javac 编 ...
- 力扣177(MySQL)-第N高的薪水(中等)
题目: 表: Employee 编写一个SQL查询来报告 Employee 表中第 n 高的工资.如果没有第 n 个最高工资,查询应该报告为 null . 查询结果格式如下所示 示例1: 示例2: 解 ...
- 牛客网-SQL专项训练18
①在下列sql语句错误的是?B 解析: 在sql中若要取得NULL,则必须通过IS NULL或者IS NOT NULL进行获取,无法直接使用等号. 一个等号(=)表示把1赋值给变量啊 ==:称为等值符 ...
- 基于Serverless的云原生转型实践
简介: 新一代的技术架构是什么?如何变革?是很多互联网企业面临的问题.而云原生架构则是这个问题最好的答案,因为云原生架构对云计算服务方式与互联网架构进行整体性升级,深刻改变着整个商业世界的 IT 根基 ...
- Apsara Stack 技术百科 | 标准化的云时代:一云多芯
简介:随着今年云栖大会现场平头哥的自研云芯片倚天710发布,以及众多新兴厂商的芯片发布,将有越来越多的类型芯片进入到主流市场,"多芯"的架构将在数据中心中越来越常见,阿里云混合云 ...
- Alibaba FFI -- 跨语言编程的探索
简介: 跨语言编程时现代程序语言中非常重要的一个方向,也被广泛应用于复杂的设计与实现中. 跨语言编程是现代程序语言中非常重要的一个方向,也被广泛应用于复杂系统的设计与实现中.本文是 GIAC 202 ...
- Quick BI电子表格: 新手亦可表格自由
简介: 随着企业业务快速增长,单纯的表或交叉表展现的数据模式相对固定,已不能满足企业中不同角色用户.不同业务场景数据可视化分析展现的诉求.在满足业务人员可视化需求层面,Quick BI不仅提供了丰富 ...
- [GF] 与 Laravel 设计相近的 Golang 框架 GoFrame
在 GoFrame (gogf/gf) 框架中有明确的代码分层设计,分别是 api, service, dao, model. model (结构模型)一般由工具自动生成,用于定义数据结构,只可被 m ...
- [FE] uViewUI u-navbar 曲线解决 uni onNavigationBarButtonTap 的限制与失效
uni 自带的 navigation bar 对于普通的导航需求是够用的,也允许 onNavigationBarButtonTap 加点击事件. 但是会出现异常Bug,表现为在内部页面一番操作后,再返 ...
- [FAQ] Error 1142: INDEX command denied to user
MySQL 用户没有某个命令权限时提示的错误.具体这里提示的是没有 index 命令权限. 把某库的所有表的 index 命令授权给用户即可: grant index on xxdb.* to 'xx ...