扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
由于 Flutter 不支持运行时反射,JSON 解析完全是手动的。
创新互联主营海西网站建设的网络公司,主营网站建设方案,app软件开发,海西h5微信小程序搭建,海西网站营销推广欢迎海西等地区企业咨询
所谓手动解析,是指使用 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 响应了。
一个 dart 文件就是一个库文件
每个 dart 文件默认导入了系统核心库 dart:core 其他库需手动导入:
import 'dart:系统库库名';
import 文件后可直接使用,默认导入一个库的所有变量和方法。
文件名后+ as +自定义名称,导入的库起的别名,同python
文件名后+ show +导入的变量或方法:只导入 show 后面的变量或方法
文件名后+ hide +隐藏的变量或方法:出 hide 后面的变量或方法,其他的变量和方法全部导入
export 公共的库文件的抽取
可以在pub.dev网站中查找第三方库。
然后即可引用使用
官方连接:
以上4行作用:
第一行,将flutter的相关命令添加到环境中
第二三行,设置使用flutter社区的仓库,这样在使用flutter get时就不会出错了
第四行,配置flutter的git仓库,用于flutter的版本更新,默认使用github上的仓库速度太慢
将以上4行分别在环境变量中添加即可
注意:推荐使用本例中的社区的源,更新更及时,更全面.以前使用 ,在构建web是出现错误,改成社区源后解决.
错误:
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流