flutterjson解析(flutter json)
本篇文章给大家谈谈flutterjson解析,以及flutter json对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、[Flutter] 08-Flutter中的Json转Model
- 2、Flutter的Dio网络请求封装
- 3、flutter 解析本地json
- 4、FlutterJsonBeanFactory插件json使用
[Flutter] 08-Flutter中的Json转Model
在此基础上,接下来我们看下Flutter中还有哪几种Json转模型的方式:
在上篇 [Flutter] 07-Flutter中反序列化Json 已经通过6个示例分析过了, 这里不再讨论。
json_serializable 是dart官方推荐和提供的JSON转Model的方式:
依赖分为项目依赖(dependencies),开发依赖(dev_dependencies),在 pubspec.yaml 中添加如下依赖:
由于很多朋友在这一步遇到了问题,这里贴出源码:
最后总结一下以json_serializable 的方式创建模型皮逗团类必须5步:
备注1:
第五步实际就是创建两个方法:
备注2:
备注3:
UserFromJson(json) 和 ToJson() 调用方法,在未执行 生成对应的.g.dart文件指令 前该行可能会报错。
part 'computer.g.dart'; 和 part 'user.g.dart'; ,在未执行 生成对应的.g.dart文件指令 前该行可能会报错。
备注4:
toString方法不是必须的,只用来打印输出进行测试。
该操作有两种指令:一次性生成指令和 持续性生成指令。
一次性生成指令
在项目终端运行下面的指令:
持续性生成指令
如果感觉每次更改Model时都需要执行一次性生成指令比较繁琐,这时可以使用下面的持续生成指令:
在项目根目录下运行该指令后会启动观察器, 观察器可以监视我们指大项目中文件的变化,并在需要时自动构建必要的文件。只需启动一次观察器,然后它就会在后台运行,这种方式也很安全。
app.quicktype.io 是一个将 JSON 转换成模型类的工具网站,目前来看支持大部分常用语言,并且灵活的燃橘可选项也非常多:
优点: 这种方式操作起来会比使用json_serializable操作起来更简便一些,并且带下划线字段会自动转换为驼峰命名的属性名。
缺点: 如果数据过于复杂的话,在生成的时候可能会少了某一个类,并且不能进行父类抽取。
目前Android Studio(或IntelliJ)有几个插件,可以将json文件转成Model类,但插件质量参差不齐,甚至还有一些有抄袭嫌疑,故笔者在此不做优先推荐,读者有兴趣可以自行了解。
总体推荐使用后两种,可以大大提升开发效率,不用埋头去搞一些重复的序列化工作。
[img]Flutter的Dio网络请求封装
在yaml文件里边知则添加如下依赖
新建一个network_config.dart文件存搭数棚放网络配置
ApiResponse是之前定义的公共接口返回实体 Flutter的Json数据解析之FlutterJsonBeanFactory插件
主要是对http异常和业务异常进行处理。
上述封装后,如果业务存在多个请求依赖调用,就需要统一的处理错误。
Dio支持自定义拦截器,继承 Interceptor ,重写 onRequest 和 onResponse 方法就行。
在初始化dio的地方,把拦截器加入dio对毕岁象的拦截器集合 dio.interceptors 中就行。
可以通过自定义的拦截器实现,也可以引入 pretty_dio_logger 库。
fastmock 上新建自己的项目,接口配置如下:
发起请求:
效果展示:
参考文章:
flutter 解析本地json
在和lib平春扒级 创建两个目录 assets 里面放置json文件
在pubspec.yaml里面配置
注意打包的时候json文件会被当成资源打入到包中,所以我们访问的时候要在runApp之前配置下初始化访问二搭粗进制权限。知森镇否则会报错
FlutterJsonBeanFactory插件json使用
使用注解@JSONField
其中name: "list"的list就是后台返回字段名称,deserialize(默认true)是否参与fromJson解析,serialize(默认true)是否参与tojson,
比如包含如下json
可以解析出来list中map的所有字段,并且每个list的map字段不同或者为null问题有会做出处理
helper文件内容
直接传递上面生成的entity就可以自动根据map解析出对应实例,并自动赋值
网络请求实例
dio请求部分
这些操作完成后自动生成如下文件
@JSONField作用在Field时,其name不仅定义了输入key的名称,为了防止后台返回数据不规范,但是flutter端需要按照驼峰命名消信
a_b_c_entity_helper.dart类提供绝咐了eitity类的tojson和拿宏轮fromjson代理方法
json_convert_content.dart提供了json_convert_content.dart.fromJsonAsT方法 根据泛型来解析json成对象
关于flutterjson解析和flutter json的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。