Flutter知识点(二)处理Json
flutter不支持反射,所以本来很简单的事情,一下子变复杂了。当然官方也提供了一些工具来方便开发者。
由于Dart的map和array的数据结构和json一样,所以在flutter中,变成了json string与Map,array之间的砖换。
(1)json结构{"name":"alan","age":18"friends":["张三","李四"]
} (2)将json转为Mapconst Map<String, dynamic> json2 = {"name":"alan", "age": "18", "friends": ["张三", "李四"]};
那么如何在实体类和json之间转换呢? 这时就要用到工具了。在pubspec.yaml中添加:
build_runner: ^2.0.0json_annotation: ^4.3.0json_serializable: ^6.0.0
还需要用到flutter.bat来运行build_runner。flutter.bat在你安装的flutter sdk下面。 必须添加环境变量, 因为flutter.bat一定要在你的工程目录下运行。

运行命令:flutter pub run build_runner watch --delete-conflicting-outputs
加了watch可以实时检测变化并且编译。
运行时,会出现"pub exit with code 64", 关掉所有android studio,重新打开就好了。
以下是你手工写的实体类(文件名:user_info.dart)。 一定要加构造函数,不像java.
另外还要加上:part 'user_info.g.dart'; 不然会报错user_info.g.dart must be included as a part directive in the input library with。
import 'package:json_annotation/json_annotation.dart';
part 'user_info.g.dart';@JsonSerializable()
class UserInfo{@JsonKey(name: 'name')final String name;UserInfo({required this.name});factory UserInfo.fromJson(Map<String, dynamic> json) => _$UserInfoFromJson(json);Map<String, dynamic> toJson() => _$UserInfoToJson(this);
}
实体类写好后,再运行上面提到的命令行。就会在相同目录下生成下面的文件:
// GENERATED CODE - DO NOT MODIFY BY HANDpart of 'user_info.dart';// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************UserInfo _$UserInfoFromJson(Map<String, dynamic> json) => UserInfo(name: json['name'] as String,);Map<String, dynamic> _$UserInfoToJson(UserInfo instance) => <String, dynamic>{'name': instance.name,};
不知你有没有觉得下面的套路代码写起来很烦。 这个问题我们可以在android studio加一个liveTemplate。
part '$File$.g.dart';factory $Name$.fromJson(Map<String, dynamic> json) => _$ $Name$FromJson(json);Map<String, dynamic> toJson() => _$ $Name$ToJson(this);

这样我们只要敲入from就可以自动生成了。我把part部分也加了,防止有时候忘记。 毕竟flutter这么搞json很不人性化。
相关文章:
Flutter知识点(二)处理Json
flutter不支持反射,所以本来很简单的事情,一下子变复杂了。当然官方也提供了一些工具来方便开发者。 由于Dart的map和array的数据结构和json一样,所以在flutter中,变成了json string与Map,array之间的砖换。 &#x…...
基本概念简介(码率,FPS(帧数),分辨率,RTMP协议)等的介绍
基本概念 为了了解视频的码率、帧率、分辨率。我们先来看看视频编码的基本原理:视频图像数据有极强的相关性,也就是说有大量的冗余信息。压缩技术就是将数据中的冗余信息去掉(去除数据之间的相关性),压缩技术包含帧内图像数据压缩技术、帧间图像数据压缩技术和熵编码压缩技…...
黑盒测试重点复习内容
黑盒测试一、等价类划分边界值分析法二、判定表法一、等价类划分边界值分析法 对于各种输入或者输出,必须考虑等价类和边界值,并补充一些特殊值,如空值、空格、0、异常格式等特殊值。 基本概念: 有效等价类:满足需求…...
Python每日一练(20230303)
1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺…...
基于Cortex-M7内核STM32F767NIH6,STM32F767VGT6,STM32F767VIT6嵌入式技术资料
STM32F7 32 位 MCUFPU 基于高性能的 ARMCortex-M7 32 位 RISC 内核,工作频率高达 216MHz。Cortex-M7 内核具有单浮点单元(SFPU)精度,支持所有 ARM 单精度数据处理指令与数据类型。同时执行全套 DSP 指令和存储保护单元(MPU)&#…...
Nginx SSL证书A+之路
问题 myssl是常见的SSL/TLS在线免费检测网站。期望能够达到A级别。 步骤 nignx worker_processes auto;http {ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;server {listen 443 ssl;server_name xxxx.xxxx.com;keepalive_timeout 70;ssl_certific…...
周期性温度和压力波的PID自动控制解决方法
摘要:目前各种PID控制器仪表常用于简单的设定点(Set Point)和斜坡(Ramp)程序控制,但对于复杂的正弦波等周期性变量的控制则无能为力。为了采用标准PID控制器便捷和低成本的实现对正弦波等周期性变量的自动控…...
从头开始搭建一个SpringBoot项目--SpringBoot文件的上传与下载
从头开始搭建一个SpringBoot项目--SpringBoot文件的上传前言流程分析代码结构代码详情UploadFileInfo.classUploadController.classUploadDao.classUploadDao.xmlUploadServices.classUploadServicesImpl.class测试下载示例前言 文件的上传和下载是很多系统必备的功能…...
It做形式主语和宾语
主谓宾,主宾能被名词性的sth,替换,如动名词,不定式,从句等等 而且,不能出现前面或者中间,很长,一大推的在开头或者中间,就产生了it做形式主宾。 一、It用作形式主语当不…...
做测试一定要知道的——软件测试流程和测试规范标准文档
目录 1、目的 2、工作范围 3、工作职责 4、测试的流程 5、测试准备阶段 6、测试方法制定阶段 7、测试执行阶段 8、bug管理 9、标准文档 总结感谢每一个认真阅读我文章的人!!! 重点:配套学习资料和视频教学 1、目的 通…...
Linux下将一个文件压缩分包成多个小文件
压缩分包 将文件test分包压缩成1G 的文件: tar czf - 文件名字 | split -b 10 - 文件名.tar.gz解压 将第一步分拆的多个包解压: cat 文件名.tar.gz* | tar -xzv...
分享5款用了一段时间,个人觉得非常nice的软件
大家在使用Windows办公、学习的时候,有没有觉得自己的电脑差了点意思?比如:电脑桌面上太杂乱、装满了各类五花八门的软件、桌面壁纸不美观等。今天,给大家分享五款个人用了段时间后,觉得非常nice的软件。 1.鼠标可视化…...
搜广推 Product-based Neural Networks (PNN) - 改进特征交叉的方式
😄 PNN:2016年上海交通大学提出。 文章目录 1、PNN1.1、原理1.2、创新点:product层1.3、product层z部分的输出:l~z~ 的计算方式:1.4、product层z部分的输出:l~p~ 的计算方式:1.4.1、IPNN1.4.2、OPNN1.5、优点1.6、缺点Reference1、PNN PNN:Product-based Neural Netwo…...
IDEA2022 配置spark开发环境
本人强烈建议在 linux环境下 学习 spark!!! Introduction Apache Spark是一个快速且通用的分布式计算引擎,可以在大规模数据集上进行高效的数据处理,包括数据转换、数据清洗、机器学习等。在本文中,我们将…...
趣味答题竞赛小程序开发功能的详细介绍
随着人们对知识学习的要求越来越高,答题已经成为了一项重要的学习和考核方式。而为了让答题变得更加有趣和富有挑战性,我们推出了趣味答题竞赛小程序。下面,我们将详细介绍这个小程序的开发功能。 1.个人淘汰赛 在个人淘汰赛中,…...
【独家】华为OD机试提供C语言题解 - 获取最大软件版本号
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明获取…...
k8s编程operator实战之云编码平台——⑤项目完成、部署
文章目录1、效果展示2、保存用户状态和访问用户服务实现方案2.1 如何保存用户的状态2.1.1 解决保留安装的插件问题2.2 如何访问到用户在工作空间中启动的http服务2.2.1 code-server如何帮我们实现了用户程序的代理3、Operator功能实现3.1 使用KubeBuilder创建项目3.1.1 完善kin…...
C语言杂记(指针篇)
指针篇 指针就是地址,地址就是指针 指针变量就是存放地址的变量 *号只有定义的时候表示定义指针变量,其他表示从地址里面取内容 通过指针的方法使main函数中的data1和data2发生数据交换。 #include <stdio.h> void chang_data(int *data1,int *da…...
ES window 系统环境下连接问题
环境问题:(我采用的版本是 elasticsearch-7.9.3)注意 开始修正之前的配置:前提:elasticsearch.yml增加或者修正一下配置:xpack.security.enabled: truexpack.license.self_generated.type: basicxpack.secu…...
hexo部署github搭建个人博客 完整详细带图版(更新中)
文章目录0. 前置内容1. hexo创建个人博客2. GitHub创建仓库3. hexo部署到GitHub4. 常用命令newcleangenerateserverdeploy5. 添加插件5.1 主题5.2 博客基本信息5.3 创建新的菜单5.4 添加搜索功能5.5 添加阅读时间字数提示5.6 打赏功能5.7 切换主题5.8 添加不蒜子统计5.9 添加百…...
KEIL MDK5.12/5.13升级后编译报错?手把手教你解决core_cm3.h找不到的问题
KEIL MDK5.12/5.13升级后编译报错?手把手教你解决core_cm3.h找不到的问题 最近不少嵌入式开发者反馈,在将KEIL MDK升级到5.12或5.13版本后,原本运行良好的工程突然开始报错,提示"cannot open source input file core_cm3.h&q…...
别再用示波器死磕了!用Python+RC积分电路,5分钟搞定充放电曲线模拟与可视化
别再用示波器死磕了!用PythonRC积分电路,5分钟搞定充放电曲线模拟与可视化 在电子工程实践中,RC积分电路的充放电特性分析是基础中的基础。传统方法往往依赖示波器观测,不仅耗时耗力,还受限于硬件条件。今天ÿ…...
鸣潮自动化终极指南:5分钟解放双手,告别重复刷图
鸣潮自动化终极指南:5分钟解放双手,告别重复刷图 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves ok-ww 是一…...
2026年,性价比超高的直播代运营供应商究竟哪家强?
在直播电商行业持续火爆的当下,众多品牌都希望借助直播代运营服务来提升销售业绩和品牌影响力。然而,市场上直播代运营供应商众多,质量参差不齐,如何选择一家性价比超高的供应商成为了品牌方的一大难题。今天,就为大家…...
PhySO快速入门指南:5分钟学会使用符号回归发现物理规律
PhySO快速入门指南:5分钟学会使用符号回归发现物理规律 【免费下载链接】PhySO Physical Symbolic Optimization 项目地址: https://gitcode.com/gh_mirrors/ph/PhySO PhySO(Physical Symbolic Optimization)是一款强大的符号回归工具…...
HCCS:整数优化的Transformer注意力Softmax替代方案
1. 整数优化的HCCS软最大替代方案概述在Transformer架构的多头注意力机制中,Softmax函数长期以来都是计算效率的瓶颈环节。传统Softmax需要进行指数运算和归一化操作,这在低精度整数推理场景下尤为昂贵。我们提出的HCCS(Head-Calibrated Clip…...
PIDtoolbox完全指南:3步掌握无人机黑盒日志分析的终极免费工具
PIDtoolbox完全指南:3步掌握无人机黑盒日志分析的终极免费工具 【免费下载链接】PIDtoolbox PIDtoolbox is a set of graphical tools for analyzing blackbox log data 项目地址: https://gitcode.com/gh_mirrors/pi/PIDtoolbox 你是否曾面对无人机的飞行日…...
2026年AI大模型接口中转平台排行榜:各平台优势大揭秘,助你精准选型
在大模型刚诞生时,开发者们大多聚焦于模型的实际效果。然而,当模型真正融入业务系统并长期运行时,API接入方式就成了关键问题。在实际项目里,开发者和企业更为关注的要点如下:接口能否持续稳定运行多模型并存时&#x…...
如何通过Elden Ring FPS Unlock And More解锁《艾尔登法环》全部性能:新手完整指南
如何通过Elden Ring FPS Unlock And More解锁《艾尔登法环》全部性能:新手完整指南 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gi…...
如何通过Noto Emoji实现跨平台表情符号统一:技术原理与应用实践
如何通过Noto Emoji实现跨平台表情符号统一:技术原理与应用实践 【免费下载链接】noto-emoji Noto Emoji fonts 项目地址: https://gitcode.com/gh_mirrors/no/noto-emoji 在数字通信日益全球化的今天,表情符号已成为跨越语言障碍的重要视觉语言。…...
