flutter开发:dio+json_serializable 实现json序列化

2019-03-2716:56:56APP与小程序开发Comments5,373 views字数 905阅读模式

1.首先增加依赖:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

dio:any文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

json_annotation: any文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

build_runner: any文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

json_serializable: any文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

注意 与flutter_test 保持统一格式,不要空格、首行缩进!!!!!!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

2.建立bean 用于绑定json数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

jsondemo地址: http://www.mocky.io/v2/5b7143ae3200001402f36c46文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

json格式分析:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

:最普通的string格式数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

包含:string与list<string>,需要建两个class 分别为data和包含data的class,这里将包含data的class 起名为postdata文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

2.1 新建dart文件创建class,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

//此为data的class 与postdata的class 在同一个dart文件中文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

import 'package:json_annotation/';文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

part '';  // 命名为固定的,写完class后由命令生成,报错先不要理会文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

@JsonSerializable(nullable:false) // 命令可根据此来生成' 文件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

class Data{   //data的class文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

String name;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

String email;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

list<String> pics;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

Data({文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

});文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

@JsonSerializable(nullable:false)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

class PostDart{  // postdata 的class文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

final intstatusCode;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

final Datadata;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

PostDart({文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

});文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

}文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

命令:文件跟目录下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

flutter packages pub run build_runner build文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

这样就能生成文件了,之前看资料有很多人推荐 这个小工具,但是这个解析复杂的json的时候会报错遂放弃文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

生成的文件分别有data和postdata的  fromjson与tojson方法,然后返回 分别实现这两个方法, 下面贴出完整的代码文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

这样就 可以实现获得返回值的时候将数据解析到对应的bean中文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

调用方法:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

重点: 要根据返回的数据格式来生成对应的bean的class,推荐 可参考这个来实现不同的数据结构下bean的生成文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/10434.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/xcx/10434.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定