1.首先增加依赖:
dio:any
json_annotation: any
build_runner: any
json_serializable: any
注意 与flutter_test 保持统一格式,不要空格、首行缩进!!!!!!
2.建立bean 用于绑定json数据
jsondemo地址: http://www.mocky.io/v2/5b7143ae3200001402f36c46
json格式分析:
1.statuscode:最普通的string格式数据
2.data包含:string与list<string>,需要建两个class 分别为data和包含data的class,这里将包含data的class 起名为postdata
2.1 新建dart文件创建class,
//此为data的class 与postdata的class 在同一个dart文件中
import 'package:json_annotation/json_annotation.dart';
part 'PostDart.g.dart'; // 命名为固定的,写完class后由命令生成,报错先不要理会
@JsonSerializable(nullable:false) // 命令可根据此来生成PostDart.g.dart' 文件
class Data{ //data的class
String name;
String email;
list<String> pics;
Data({
this.name,
this.email,
this.pics
});
@JsonSerializable(nullable:false)
class PostDart{ // postdata 的class
final intstatusCode;
final Datadata;
PostDart({
this.statusCode,
this.data
});
}
命令:文件跟目录下
flutter packages pub run build_runner build
这样就能生成xx.g.dart文件了,之前看资料有很多人推荐https://caijinglong.github.io/json2dart/index_ch.html 这个小工具,但是这个解析复杂的json的时候会报错遂放弃
生成的xx.g.dart文件分别有data和postdata的 fromjson与tojson方法,然后返回postdata.class 分别实现这两个方法, 下面贴出完整的代码
这样就 可以实现获得返回值的时候将数据解析到对应的bean中
调用方法:
重点: 要根据返回的数据格式来生成对应的bean的class,推荐 https://juejin.im/post/5b5d782ae51d45191c7e7fb3 可参考这个来实现不同的数据结构下bean的生成