码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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 

    {"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 ,

    friends可以正常转换为 List 命名还是比较舒服的

    优点:

    代码不依赖 其他库

    网页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能写注释但是写起来麻烦

  • 相关阅读:
    数学术语之源——“齐次(homogeneity)”的含义
    元宇宙工程系,来了一位“吃螃蟹”者
    基于spring boot开发的快递管理系统开题报告
    web大作业:简单的学生网页作业源码 基于html css javascript jquery实现智能分控网站
    Docker 安装 Nginx 容器 (完整详细版)
    做哪些副业可以日赚一百?对程序员来说简直不要太容易!
    JOSEF约瑟DZJ-402 DZY-401导轨式中间继电器 触点形式 两转换 AC、DC220V
    测试驱动的嵌入式C语言开发(TDD)(第1-3章)
    《分布式服务架构:原理,设计与实战》
    Java——String类全面解析
  • 原文地址:https://blog.csdn.net/tangshangkui/article/details/133304483
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号