Flutter -- JSON解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter -- JSON解析相关的知识,希望对你有一定的参考价值。

参考技术A

由于 Flutter 不支持运行时反射,JSON 解析完全是手动的。
所谓手动解析,是指使用 dart:convert 库中内置的 JSON 解码器,将 JSON 字符串解析成自定义对象的过程。使用这种方式,我们需要先将 JSON 字符串传递给 JSON.decode 方法解析成一个 Map,然后把这个 Map 传给自定义的类,进行相关属性的赋值。

下面动手解析一个用户的信息

首先,我们根据 JSON 结构定义 User类,并创建一个工厂类,来处理 User 类属性成员与 JSON 字典对象的值之间的映射关系:

数据解析类创建好了,剩下的事情就相对简单了,我们只需要把 JSON 文本通过 JSON.decode 方法转换成 Map,然后把它交给 User 的工厂类 fromJson 方法,即可完成 User 对象的解析:

项目中往往会碰到 嵌套对象属性 情况,

面对这种情况,我们需要为每一个非基本类型属性创建一个解析类。

然后,我们只需要在 User 类中,增加 dog 属性及对应的 JSON 映射规则即可:

通过这种方法,无论对象有多复杂的非基本类型属性,我们都可以创建对应的解析类进行处理。

不过到现在为止,我们的 JSON 数据解析还是在主 Isolate 中完成。如果 JSON 的数据格式比较复杂,数据量又大,这种解析方式可能会造成短期 UI 无法响应。下面我们可以用 compute 函数优化一下

通过 compute 的改造,我们就不用担心 JSON 解析时间过长阻塞 UI 响应了。

flutter 解析本地json

参考技术A 在和lib平级 创建两个目录 assets 里面放置json文件
在pubspec.yaml里面配置

注意打包的时候json文件会被当成资源打入到包中,所以我们访问的时候要在runApp之前配置下初始化访问二进制权限。否则会报错

以上是关于Flutter -- JSON解析的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 网络请求与 json 解析

在 Flutter 中解析 JSON 日期

Flutter:Json解析

如何用 Flutter 解析动态 JSON?

Flutter 中的 JSON 数据解析

在 Flutter 中解析 JSON 时 Json.decode 挂起