dart flutter json 转 model 常用库对比 json_serializable json_model JsonToDart
1.对比
我是一个初学者,一直跟着教材用原生的json,最近发现实在太麻烦了.所以搜索了一下,发现真的有很多现成的解决方案.
| 网页 | https://app.quicktype.io/?l=dart 这个是测试下来最好用的 有很多选项,可以使用 json_serializable 也可以不使用
|
| json_serializable | 这是推荐最多的,也是 pub.dev likes最多的, 优点: 1.可以 识别 key 和 dart代码中的"name" 不相同的代码, 例如 {"name":"姓名"} 把 name 改为 dart中的 变量 name2 2.可以使用 命令行自动生成 缺点: 书写 model 麻烦.不能直接从json 生成 dart model 依赖 json_annotation(暂且算一个缺点把) |
| json_model | 一个命令行工具,用于从json 生成json_annotation 的model 文件 作者是 <Flutter实战·第二版> 的作者,估计是为了配合 写书,所以只有1.0版本,但是书中有代码说明,自己修改的话估计比较容易 优点: 支持多种格式(比如 类型 数组 以及 List<自定义类型> 注释 引入dart文件 等) 缺点: {"bbb": {"bbb1": 10,"bbb2": 20}}会被识别为 Map<String, int> {"friends":[{"name": "中文","age": 10}]}需要书写为 {"friends":"$[]friends"} 然后再自定义一个 friends的model |
| JsonToDart | 有两个,其中一个下载量很大的不支持 Android Studio,只支持 JetBrains(要花钱买) 我只测试了 支持 Android Studio. 缺点: 生成代码的时候 需要手动capy 代码到编辑框中(和使用网页差不多). 同样{"bbb": {"bbb1": 10,"bbb2": 20},"friends":[{"name": "中文","age": 10}]} bbb会被识别为 Map<String, int> , friends可以正常转换为 List<Friend> 命名还是比较舒服的 优点: 代码不依赖 其他库 |
| 网页1 | https://caijinglong.github.io/json2dart/index_ch.html 生成 json_serializable 代码 {"bbb": {"bbb1": 10,"bbb2": 20},"friends":[{"name": "中文","age": 10}]} 都能识别为 model 缺点: friends 不会识别为 friend(无法识别英文复数) 需要手动复制代码到网页框 依赖 json_serializable 还需要再次build |
| 网页2 | https://jsontodart.zariman.dev/ 这个好像支持 vs code 插件. 优点: 生成的代码不依赖其他库 {"bbb": {"bbb1": 10,"bbb2": 20},"friends":[{"name": "中文","age": 10}]} 都能识别为 model 缺点: friends 不会识别为 friend(无法识别英文复数) 需要手动复制代码到网页框 生成的代码需要简单修改 否则会报错 例如: c{ String dbDir;
c({this.dbDir}); //这行需要删除 {}
}
|
2.结论
不依赖 json_serializable 的方案 在 json 和 model 不完全一致(比如key名字不一样)的情况比较麻烦,
只有json_model能写注释但是写起来麻烦
相关文章:
dart flutter json 转 model 常用库对比 json_serializable json_model JsonToDart
1.对比 我是一个初学者,一直跟着教材用原生的json,最近发现实在太麻烦了.所以搜索了一下,发现真的有很多现成的解决方案. 网页 https://app.quicktype.io/?ldart 这个是测试下来最好用的 有很多选项,可以使用 json_serializable 也可以不使用 json_serializable 这是推荐最…...
nginx启用了自动目录列表功能的安全漏洞修复方法
一、前言 最近被扫描到安全漏洞,说是nginx启用了自动目录列表功能,现象就是访问http://localhost/file就能看到服务器上的目录 二、修复方法 1.把nginx.conf中的autoindex on改为autoindex off location /file {alias /myuser/userfile/file;autoi…...
vector向量类使用
向量是最简单的 STL 容器,其数据结构与数组相似,占据着一个连续的内存块。 由于内存位置是连续的,所以向量中的元素可以随机访问,访问向量中任何一个元素的时间也是固定的。存储空间的管理是自动的,当要将一个元素插入…...
【Java 进阶篇】MySQL多表查询:内连接详解
MySQL是一种强大的关系型数据库管理系统,允许您在多个表之间执行复杂的查询操作。本文将重点介绍MySQL中的多表查询中的一种重要类型:内连接(INNER JOIN)。内连接用于检索满足两个或多个表之间关联条件的行,它能够帮助…...
C理解(四):链表
本文主要探讨单链表与双链表相关知识。 linux内核链表(include/linux/list.h) 内核链表中纯链表封装,纯链表的各种操作函数(节点创建、插入、删除、遍历),纯链表内嵌在驱动结构体中,实现驱动的创建、插入、删除、遍历等 单链表 单链表链表头插…...
新手教程,蛋糕小程序的搭建流程一网打尽
作为一名新手,想要搭建一个蛋糕小程序可能会觉得有些困惑。但是,不用担心!今天我将为大家详细介绍蛋糕小程序的搭建流程,并带大家一步步完成。 首先,我们需要登录乔拓云网的后台。在登录成功后,点击进入商城…...
springcloud之自我介绍
写在前面 在这篇文章 中我们分析了单体应用的问题,以及用来解决这些问题的解决的方案微服务,并接着看了微服务需要考虑的各种,如服务调用,负载均衡,服务治理,链路追踪,分布式事务,等…...
机器学习之神经网络的层次
文章目录 神经网络组成神经网络根据结构分类神经网络的信号传递 神经网络组成 大脑是一个巨大的神经元网络,所以神经网络是一个节点网络。根据节点的连接方式,可以创建多种神经网络。最常用的神经网络类型之一采用了如图所示的节点分层结构 正方形节点组…...
力扣每日一题(+日常水几道题)
每日一题1333. 餐厅过滤器 - 力扣(LeetCode) 简单的按规则排序,去除几个不满足的条件然后排序返回即可 #include<algorithm> class Solution { public:vector<int> filterRestaurants(vector<vector<int>>& restaurants, …...
百度SEO不稳定的原因及解决方法(百度SEO不稳定因素的5大包括)
百度SEO优化不稳定介绍:蘑菇号-www.mooogu.cn 随着百度SEO算法的不断变化和升级,许多网站的SEO排名经常出现不稳定的情况,这种情况在一定程度上影响了网站的流量和排名,导致网站的质量评分降低。因此,深入分析百度SEO…...
深度学习(1)---卷积神经网络
文章目录 一、发展历史1.1 CNN简要说明1.2 猫的视觉实验1.3 新认知机1.4 LeNet-51.5 AlexNet 二、卷积层2.1 图像识别特点2.2 卷积运算2.3 卷积核2.4 填充和步长2.5 卷积计算公式2.6 多通道卷积 三、池化层 一、发展历史 1.1 CNN简要说明 1. 卷积神经网络(Convolut…...
探索社会工程的深度:从定义到高级攻击策略
在广阔的网络安全领域,社会工程作为一种微妙的威胁而出现,它利用人类的漏洞来访问敏感信息或实施欺诈。网络安全背景下的社会工程的定义很明确:它包括使用欺骗手段操纵个人泄露机密或个人信息,然后将这些信息用于欺诈目的。 此类…...
CTF 入门指南:从零开始学习网络安全竞赛
文章目录 写在前面CTF 简介和背景CTF 赛题类型介绍CTF 技能和工具准备好书推荐 写作末尾 写在前面 CTF比赛是快速提升网络安全实战技能的重要途径,已成为各个行业选拔网络安全人才的通用方法。但是,本书作者在从事CTF培训的过程中,发现存在几…...
Spring整合第三方框架
目录 Spring整合第三方框架 加载外部properties文件 自定义命名空间解析原理 自定义命名空间总结和案例需求 总结 案例 Spring整合第三方框架 加载外部properties文件 Spring整合第三方框架不像MyBatis那么简单了,例如Dubbo框架在与Spring框架整合时…...
Linux Shell 无vi获取文件某行指定内容和修改某行指定内容
注意:操作之前一定要先备份!!!一定要先备份!!!一定要先备份!!! 1. 获取某配置文件中某一行某项的值 cat /sshd_config |grep "PermitRootLogin" …...
在EXCEL中构建加载项之创建加载项的目的及规范要求
【分享成果,随喜正能量】一句南无阿弥陀佛,本是释迦牟尼佛所证的无上正等正觉法,洒在娑婆世界的众生海中,只为末世众生能够以信愿之心抓住此救命稻草,要知道今世人此生的处境,可能只剩这道要么极乐要么三涂…...
Hive【Hive(三)查询语句】
前言 今天是中秋节,早上七点就醒了,干啥呢,大一开学后空教室紧缺,还不趁着假期来学校等啥呢。顺便偷偷许个愿吧,希望在明年的这个时候,秋招不知道赶不赶得上,我希望拿几个国奖,蓝桥杯…...
商场做小程序商城的作用是什么?
商场是众多商家聚集在一起的购物公共场所,大商场也往往入驻着众多行业商家,是每个城市重要的组成部分。 随着互联网电商深入及客户消费行为改变,不少商场如今的客流量非常有限,甚至可以说是员工比客人多,这就导致撤店…...
XPD738协议系列-USB Type-C PD 和 Type-A 双口控制器
产品描述: XPD738 是一款集成 USB Type-C、USB Power Delivery(PD)2.0/3.0 以及 PPS、QC3.0/QC3.0/QC2.0 快充协议、华为 FCP/SCP/HVSCP 快充协议、三星 AFC 快充协议、BC1.2 DCP 以及苹果设备 2.4A 充电规范的多功能 USB Type-C 和 Type-A …...
【面试八股】IP协议八股
IP协议八股 子网掩码的作用为什么IP协议需要分片IP协议什么时候需要分片IP协议是怎么进行分片的那么IP协议是如果进行标识属于同一个分片呢?TCP协议和UDP协议将数据交给IP协议之后,是否需要分片传输? 子网掩码的作用 用来标识网络号和主机号…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
