Flutter工具:Dart几种常用Json转Object方式

2019-08-1919:43:28APP与小程序开发Comments8,079 views字数 1304阅读模式

Json这东西在大部分开发中是不可少的。所以接下来罗列几种最近学习Flutter中个人常用的几种Json转Object的方式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

网页工具

某大神提供的JSON to Dart的网页版工具,点进去你就会用了。如图,简单明了,没什么可说。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

Flutter工具:Dart几种常用Json转Object方式

目前发现的缺点数组格式json无法直接转文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

json_serializable

刚开始学习的时候在某博客看到的(忘记是哪个了),整体操作比较繁琐。以下是该工具的GitHub地址,及使用步骤。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

github

github.com/dart-lang/j…文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

集成

在pubspec.yaml文件中添加dio和json_serializable的相关插件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

dependencies:
  flutter:
    sdk: flutter

  dio: ^2.1.3 #网络请求
  json_annotation: ^0.2.3

dev_dependencies:
  flutter_test:
    sdk: flutter

  #这两个是dev的,不要放到上面去了哦
  build_runner: ^0.9.0
  json_serializable: ^2.0.00

复制代码

创建model

通过这个网址生成dar文件,效果如下图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

Flutter工具:Dart几种常用Json转Object方式

生成的with混合类 如果没用可删除文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

命令生成.g文件

在项目根目录下输入命令:flutter packages pub run build_runner build, 完成之后会在bean.dart同级目录下,自动创建一个名为bean.g.dart的文件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

如果有其他.g文件存在影响,可用这个命令`flutter packages pub run build_runner build --delete-conflicting-outputs`文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

FlutterJsonBeanFactory插件

插件安装

使用AndroidStudio/Idea的朋友可以到Setting->Plugins中安装文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

使用

在你要写bean的目录右击->New->dart bean class File from JSON,如图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

Flutter工具:Dart几种常用Json转Object方式

在弹出的界面写上文件名,粘上json格式文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

Flutter工具:Dart几种常用Json转Object方式
  • 生成的文件名后面会自动加上_entity
  • 同第一个一样,数组格式的json也无法直接生成

手写

你懂的!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

PS:关于数组json

如下格式json数组,在工具1跟3是无法直接生成的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

[
  {
    "howlong": "30",
    "id": "1",
    "name": "一个月",
    "price": "50.05"
  }
]
复制代码

这一类的可以直接生成数组内的Object对象,然后再对应文件添加获取对象的方法即可,如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

List<Bean> getBeanList(List<dynamic> list){
    List<Bean> result = [];
    list.forEach((item){
      result.add(Bean.fromJson(item));
    });
    return result;
  }
复制代码

尾记

因时常会忘记,所以这就当一个小总结吧。各位道友可根据不同场景选择使用,也欢迎推荐其他的方式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

作者:牛肉羹一碗
链接:https://juejin.im/post/5d4a2d80f265da03ee6a4097
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15677.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/xcx/15677.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定