当前位置: 首页 > news >正文

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/
https://github.com/shiburagi/JsonToDart

这个好像支持 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启用了自动目录列表功能的安全漏洞修复方法

一、前言 最近被扫描到安全漏洞&#xff0c;说是nginx启用了自动目录列表功能&#xff0c;现象就是访问http://localhost/file就能看到服务器上的目录 二、修复方法 1.把nginx.conf中的autoindex on改为autoindex off location /file {alias /myuser/userfile/file;autoi…...

vector向量类使用

向量是最简单的 STL 容器&#xff0c;其数据结构与数组相似&#xff0c;占据着一个连续的内存块。 由于内存位置是连续的&#xff0c;所以向量中的元素可以随机访问&#xff0c;访问向量中任何一个元素的时间也是固定的。存储空间的管理是自动的&#xff0c;当要将一个元素插入…...

【Java 进阶篇】MySQL多表查询:内连接详解

MySQL是一种强大的关系型数据库管理系统&#xff0c;允许您在多个表之间执行复杂的查询操作。本文将重点介绍MySQL中的多表查询中的一种重要类型&#xff1a;内连接&#xff08;INNER JOIN&#xff09;。内连接用于检索满足两个或多个表之间关联条件的行&#xff0c;它能够帮助…...

C理解(四):链表

本文主要探讨单链表与双链表相关知识。 linux内核链表(include/linux/list.h) 内核链表中纯链表封装,纯链表的各种操作函数&#xff08;节点创建、插入、删除、遍历&#xff09;,纯链表内嵌在驱动结构体中,实现驱动的创建、插入、删除、遍历等 单链表 单链表链表头插…...

新手教程,蛋糕小程序的搭建流程一网打尽

作为一名新手&#xff0c;想要搭建一个蛋糕小程序可能会觉得有些困惑。但是&#xff0c;不用担心&#xff01;今天我将为大家详细介绍蛋糕小程序的搭建流程&#xff0c;并带大家一步步完成。 首先&#xff0c;我们需要登录乔拓云网的后台。在登录成功后&#xff0c;点击进入商城…...

springcloud之自我介绍

写在前面 在这篇文章 中我们分析了单体应用的问题&#xff0c;以及用来解决这些问题的解决的方案微服务&#xff0c;并接着看了微服务需要考虑的各种&#xff0c;如服务调用&#xff0c;负载均衡&#xff0c;服务治理&#xff0c;链路追踪&#xff0c;分布式事务&#xff0c;等…...

机器学习之神经网络的层次

文章目录 神经网络组成神经网络根据结构分类神经网络的信号传递 神经网络组成 大脑是一个巨大的神经元网络&#xff0c;所以神经网络是一个节点网络。根据节点的连接方式&#xff0c;可以创建多种神经网络。最常用的神经网络类型之一采用了如图所示的节点分层结构 正方形节点组…...

力扣每日一题(+日常水几道题)

每日一题1333. 餐厅过滤器 - 力扣&#xff08;LeetCode&#xff09; 简单的按规则排序,去除几个不满足的条件然后排序返回即可 #include<algorithm> class Solution { public:vector<int> filterRestaurants(vector<vector<int>>& restaurants, …...

百度SEO不稳定的原因及解决方法(百度SEO不稳定因素的5大包括)

百度SEO优化不稳定介绍&#xff1a;蘑菇号-www.mooogu.cn 随着百度SEO算法的不断变化和升级&#xff0c;许多网站的SEO排名经常出现不稳定的情况&#xff0c;这种情况在一定程度上影响了网站的流量和排名&#xff0c;导致网站的质量评分降低。因此&#xff0c;深入分析百度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. 卷积神经网络&#xff08;Convolut…...

探索社会工程的深度:从定义到高级攻击策略

在广阔的网络安全领域&#xff0c;社会工程作为一种微妙的威胁而出现&#xff0c;它利用人类的漏洞来访问敏感信息或实施欺诈。网络安全背景下的社会工程的定义很明确&#xff1a;它包括使用欺骗手段操纵个人泄露机密或个人信息&#xff0c;然后将这些信息用于欺诈目的。 此类…...

CTF 入门指南:从零开始学习网络安全竞赛

文章目录 写在前面CTF 简介和背景CTF 赛题类型介绍CTF 技能和工具准备好书推荐 写作末尾 写在前面 CTF比赛是快速提升网络安全实战技能的重要途径&#xff0c;已成为各个行业选拔网络安全人才的通用方法。但是&#xff0c;本书作者在从事CTF培训的过程中&#xff0c;发现存在几…...

Spring整合第三方框架

目录 Spring整合第三方框架 加载外部properties文件 自定义命名空间解析原理 自定义命名空间总结和案例需求 总结 案例 Spring整合第三方框架 加载外部properties文件 Spring整合第三方框架不像MyBatis那么简单了&#xff0c;例如Dubbo框架在与Spring框架整合时&#xf…...

Linux Shell 无vi获取文件某行指定内容和修改某行指定内容

注意&#xff1a;操作之前一定要先备份&#xff01;&#xff01;&#xff01;一定要先备份&#xff01;&#xff01;&#xff01;一定要先备份&#xff01;&#xff01;&#xff01; 1. 获取某配置文件中某一行某项的值 cat /sshd_config |grep "PermitRootLogin" …...

在EXCEL中构建加载项之创建加载项的目的及规范要求

【分享成果&#xff0c;随喜正能量】一句南无阿弥陀佛&#xff0c;本是释迦牟尼佛所证的无上正等正觉法&#xff0c;洒在娑婆世界的众生海中&#xff0c;只为末世众生能够以信愿之心抓住此救命稻草&#xff0c;要知道今世人此生的处境&#xff0c;可能只剩这道要么极乐要么三涂…...

Hive【Hive(三)查询语句】

前言 今天是中秋节&#xff0c;早上七点就醒了&#xff0c;干啥呢&#xff0c;大一开学后空教室紧缺&#xff0c;还不趁着假期来学校等啥呢。顺便偷偷许个愿吧&#xff0c;希望在明年的这个时候&#xff0c;秋招不知道赶不赶得上&#xff0c;我希望拿几个国奖&#xff0c;蓝桥杯…...

商场做小程序商城的作用是什么?

商场是众多商家聚集在一起的购物公共场所&#xff0c;大商场也往往入驻着众多行业商家&#xff0c;是每个城市重要的组成部分。 随着互联网电商深入及客户消费行为改变&#xff0c;不少商场如今的客流量非常有限&#xff0c;甚至可以说是员工比客人多&#xff0c;这就导致撤店…...

XPD738协议系列-USB Type-C PD 和 Type-A 双口控制器

产品描述&#xff1a; XPD738 是一款集成 USB Type-C、USB Power Delivery&#xff08;PD&#xff09;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协议是如果进行标识属于同一个分片呢&#xff1f;TCP协议和UDP协议将数据交给IP协议之后&#xff0c;是否需要分片传输&#xff1f; 子网掩码的作用 用来标识网络号和主机号…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...

Canal环境搭建并实现和ES数据同步

作者&#xff1a;田超凡 日期&#xff1a;2025年6月7日 Canal安装&#xff0c;启动端口11111、8082&#xff1a; 安装canal-deployer服务端&#xff1a; https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...

Python环境安装与虚拟环境配置详解

本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南&#xff0c;适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者&#xff0c;都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...

StarRocks 全面向量化执行引擎深度解析

StarRocks 全面向量化执行引擎深度解析 StarRocks 的向量化执行引擎是其高性能的核心设计&#xff0c;相比传统行式处理引擎&#xff08;如MySQL&#xff09;&#xff0c;性能可提升 5-10倍。以下是分层拆解&#xff1a; 1. 向量化 vs 传统行式处理 维度行式处理向量化处理数…...

Git 命令全流程总结

以下是从初始化到版本控制、查看记录、撤回操作的 Git 命令全流程总结&#xff0c;按操作场景分类整理&#xff1a; 一、初始化与基础操作 操作命令初始化仓库git init添加所有文件到暂存区git add .提交到本地仓库git commit -m "提交描述"首次提交需配置身份git c…...