You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 09:40:45