天天看点

Flutter基础之Json数据解析

作者:搬砖小码龙

简介

在日常开发中,通过网络请求获取后端接口返回一些结构化字符串数据,如json,xml等。前端无法直接使用这些json数据,需要将json格式的字符串转为可使用的类对象或Dart对象。

与java不同的是,Flutter无法直接生成数据解析类,需要通过第三方工具生成。本文主要介绍在Flutter中如何实现数据解析。

对比

因为Java和Kotlin语言提供有JackSon和Gson序列化类库,可以直接使用。对于Flutter来说,由于这些序列化库都需要使用运行时反射,Flutter不支持,所以需要手动实现。

示例:对于字符串“[{ "name": "Jack","age": 19}]”,不同语言的数据类如下。

  1. Java
Flutter基础之Json数据解析
  1. kotlin
Flutter基础之Json数据解析
  1. flutter
Flutter基础之Json数据解析

从三种语言各自生成的数据类对比来看,kotlin最简单,java手写也能实现,Flutter的数据类看起来比较复杂,使用的json也只有两个属性,正常开发过程中,对象类的属性很多,如果手写过于复杂而且容易出错。这个时候可以需要借助第三方工具实现。

引入

在Flutter工程的pubspec.yaml文件中,添加json_annotation和json_serializable对应版本依赖,然后点击编译工具上的提示 Pub get或者命令行输入flutter pub get即可导入库文件。

Flutter基础之Json数据解析

基本使用

  1. 在浏览器中打开json2dart_for_json_serializable网站。
Flutter基础之Json数据解析
  1. 将接口返回的json字符串粘贴到左边输入框内。然后点击下边的格式化。生成对应的数据类。
Flutter基础之Json数据解析
  1. 修改类名。类名支持自定义,默认为Entity,修改完成后,点击下载生成对应的dart文件,或直接点击复制代码。
Flutter基础之Json数据解析
  1. 在我们的项目根目录下运行:flutter packages pub run build_runner build 命令,生成一个person.g.dart文件,
Flutter基础之Json数据解析
  1. 这时一个完整的数据类就完成了。可以电源Person.fromJson直接进行数据解析。
Flutter基础之Json数据解析

注意事项

需要注意的是:如果修改了数据类中的字段,需要删除person.g.dart文件,然后运行命令重新生成即可。

总结

本文介绍的是一种Flutter数据类的常用生成方法,当然还有其他生成方法,但是本文介绍的方法是官方推荐的。其他方法有一定的缺陷。推荐大家使用这种方式生成数据类。

本文介绍常见数据解析类的生成使用。为后续实战打好基础。对实战项目感兴趣的同学,可以点击关注小编!