文章目录

  • Flutter JSON解析
    • 基本使用
      • 定义bean类
      • 解析Json
      • 解析JsonArray
    • 自动生成Model类
      • 添加依赖
      • 编写代码
      • 执行命令
    • 在线网站生成
    • JsonToDart插件生成

Flutter JSON解析

基本使用

定义bean类

class User {final String name;final int age;final String address;User(this.name, this.age, this.address);@overrideString toString() {return 'User{name: $name, age: $age, address: $address}';}
}

解析Json

String jsonStr = """{"name":"小明","age":18,"address":"beijing"
}""";
var jsonMap = json.decode(jsonStr);
var user = User(jsonMap["name"], jsonMap["age"], jsonMap["address"]);
print(user); //User{name: 小明, age: 18, address: beijing}

解析JsonArray

String jsonArrayStr = """[{"name": "小黑","age": 18,"address": "shanghai"},{"name": "小白","age": 28,"address": "beijing"},{"name": "小明","age": 38,"address": "广州"}
]""";
List jsonArray = json.decode(jsonArrayStr);
List<User> userList = jsonArray.map((e) => User(e["name"], e["age"], e["address"])).toList();
print(userList); //[User{name: 小黑, age: 18, address: shanghai}, User{name: 小白, age: 28, address: beijing}, User{name: 小明, age: 38, address: 广州}]

自动生成Model类

实际开发中,JSON很少会这么简单,嵌套的Json情况很多。可以使用json_serializable插件自动生成Model类。

添加依赖

dependencies:json_annotation: ^4.5.0dev_dependencies:json_serializable: ^6.2.0build_runner: ^2.1.11

编写代码

part 'person.g.dart';@JsonSerializable()
class Person {final String name;final int age;final String address;Person(this.name, this.age, this.address);factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);Map<String, dynamic> toJson() => _$PersonToJson(this);@overrideString toString() {return 'User{name: $name, age: $age, address: $address}';}
}
  • part:表示生成的Model类在什么位置。
  • @JsonSerializable():这个标注告诉生成器,是这个类需要生成Model类。

执行命令

一次性生成

在项目的根目录下执行:

flutter packages pub run build_runner build

持续生成

flutter packages pub run build_runner watch

推荐将所有的Model类放在一个单独的目录下,然后执行命令。

在线网站生成

https://app.quicktype.io/

JsonToDart插件生成

在AndroidStudio中安装JsonToDart插件,然后选定目录,点击右键,选择New -> Json to Dart,或快捷键ALT + Shift + D自动生成Model类。

Flutter JSON数据解析相关推荐

  1. dio java,Flutter基础(十一)网络请求(Dio)与JSON数据解析

    本文首发于微信公众号「后厂技术官」 前言 在Android开发中如果我们想要请求网络,可以使用HttpClent.HttpURLConnection,但在项目中一般都会使用OkHttp和Retrofi ...

  2. Android JSON数据解析(GSON方式)

    要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个Jav ...

  3. Rxjava、Retrofit返回json数据解析异常处理

    每个App都避免不了要进行网络请求,从最开始的用谷歌封装的volley到再到android-async-http再到OKHttpUtils再到现在的Retrofit和RxJava,从我自己用后的体验来 ...

  4. 29-30Python多线程、多线程、使用threading模块创建线程;JSON数据解析、编码为JSON类型转换对应表、Python类型转换对应表、json.dumps与json.loads

    29Python3多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些 ...

  5. Android学习笔记44:JSON数据解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android ...

  6. Android json数据解析及简单例子

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  7. Linux7081端口,bash,linux_利用shell将json数据解析后排序问题,bash,linux,ubuntu,json - phpStudy...

    利用shell将json数据解析后排序问题 最近在写一个模仿dropbox_uploader的百度网盘的shell脚本.通过调用pcs的api返回一个目录下的所有文件.返回的json数据如下: {&q ...

  8. Android系列---JSON数据解析

    http://www.cnblogs.com/xiaoluo501395377/p/3446605.html Android系列---JSON数据解析 转载于:https://www.cnblogs. ...

  9. iOS进阶(XML、JSON数据解析)

    1.XML解析之DOM解析 需要用到libxml2.dylib框架 和GDataXMLNode工具 DOM是基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中.从而消耗很大的内存空间.DOM ...

最新文章

  1. DELPHI 开发的 OCX 控件在 MFC 程序中编辑框快捷键不好使的解决
  2. 中国科学家提出“探索极端宇宙”国际科学计划
  3. 打断点是什么意思_佛学基础知识(股票所说的大盘几千点,是指的什么意思)
  4. Teraco公司投资9000万美元扩建其在南非数据中心
  5. golang 学习心得一(开发环境搭建过程中一些坑)
  6. 新手如何免费开始学习阿里云ECS云服务器?
  7. 利用Java手写简单的httpserver
  8. 基于qt平台的ip地址输入控件
  9. Data URL和图片
  10. Win7/10快捷方式恢复小箭头
  11. DBA必备技能:数据库挂起时进行转储分析诊断案例
  12. macOS 虚拟摄像头:CamTwist for Mac
  13. JAVA 开发基础【JSON相关】
  14. 从加密朋克到赛博朋克,一文盘点热门NFT头像项目
  15. 全球开发者各出奇招:我们想这样适配iPhone X
  16. pytest单元测试
  17. 计算机技术服务业成本核算,技术服务成本怎么核算?
  18. 人工智能专家细数AI安全隐患
  19. C#应用程序与MATLAB联合编程
  20. 论文解读:《一种利用二核苷酸One-hot编码器识别水稻基因组中N6甲基腺嘌呤位点的卷积神经网络》

热门文章

  1. openmpi雅可比迭代法_用雅可比迭代法求线性方程组的解的并行算法(MPI)
  2. 蛮力法/最大连续子序列的和O(n^3)
  3. https://raw.githubusercontent.com无法下载解决流程
  4. 抽屉远离在计算机的应用,抽屉原理破电脑科学算命
  5. 使用myBatis访问数据库原理
  6. sssssssssssssss
  7. iResearch-艾瑞投资月报2015年7月
  8. Failed to resolve attribute at index 6
  9. 圆角装饰条_【混凝土柱子倒角条圆弧线条_倒角圆弧线条塑料圆角线条】河北衡水_报价_图片-安平县格华丝网制品有限公司...
  10. ubuntu18.04 maas