如何用json_serializable实现toJson与fromJson的字段键名差异映射
解决json_serializable序列化与反序列化键名不一致的问题
直接通过@JsonKey注解的fromJsonKey和toJsonKey参数就能实现需求,完全不用自定义完整的序列化/反序列化方法。
修改后的代码如下:
import 'package:json_annotation/json_annotation.dart'; part 'id.g.dart'; @JsonSerializable() class Id extends INetworkModel<Id> { Id(this.idUser); @JsonKey(fromJsonKey: 'id', toJsonKey: 'idUser') final int? idUser; @override Id fromJson(Map<String, dynamic> json) => _$IdFromJson(json); @override Map<String, dynamic>? toJson() => _$IdToJson(this); }
参数说明:
fromJsonKey: 'id':指定反序列化时,从JSON数据的"id"字段读取值,赋值给类里的idUser属性toJsonKey: 'idUser':指定序列化时,将idUser属性的值以"idUser"为键名输出到JSON中
执行代码生成命令:
flutter pub run build_runner build
生成的_$IdFromJson方法会自动从JSON的"id"字段取值,_$IdToJson方法会自动输出"idUser"键,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者Mehmet Karanlık
相关产品推荐
相关产品推荐

