一、 第一步配置
在 pubspec.yaml 文件中配置
dependencies:
json_annotation: ^4.4.0 # 注解类需要(@JsonSerializable())
dev_dependencies:
build_runner:
json_serializable:
二、第二步实体类
import 'package:json_annotation/json_annotation.dart';#这个必须import
part 'xxx.g.dart';#xxx和文件名相同 小写 会生成文件 xxx.g.dart
@JsonSerializable()#表示需要生成序列化文件
class AAA{
}
三、第三步生成相应文件
命令行执行
flutter packages pub run build_runner build
四、第四步手动添加读fromJson tojson
factory AAA.fromJson(Map<String,dynamic> json)=> _$AAAFromJson(json);
Map<String,dynamic> tojson()=> _$AAAToJson(this);
五、泛型问题
报错
╷
13 │ T? data;
│ ^^^^
╵
按提示修改注解
@JsonSerializable(genericArgumentFactories: true)
class AAA{
}
fromjson tojson
factory ResponseModel.fromJson(
Map<String, dynamic> json, T Function(Object? json) fromJsonT) =>
_$ResponseModelFromJson(json, fromJsonT);
Map<String, dynamic> tojson(
Object? Function(T value) toJsonT,
) =>
_$ResponseModelToJson(this, toJsonT);
使用(还未验证 太晚了)
ResponseModel<DataBean> ss=new ResponseModel();
//对象转json
var json= ss.tojson((value) => ss.data);
//json转对象
ResponseModel.fromJson(json, (jsonT)=> DataBean.fromJson(jsonT as Map<String,dynamic>));