flutter dio+json_serializable 实现json序列化

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,需要建两个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 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的生成

你可能感兴趣的:(flutter dio+json_serializable 实现json序列化)