首页 > 解决方案 > 带有 json_serializable 的 JSON 编码/解码列表

问题描述

我正在使用这些包:https://pub.dev/packages/json_annotationhttps://pub.dev/packages/json_serializable

我想在我的颤振应用程序中编码/解码对象列表。列表中的类如下:

@JsonSerializable()
class Trial {
  final ProtocolType type;
  List<List<double>> data;
  @JsonKey()
  final DateTime date;

  Trial({this.type, this.data, this.date});
  Map<String, dynamic> toMap() {
    return {'type': this.type, 'data': this.data, 'date': this.date};
  }

  factory Trial.fromJson(Map<String, dynamic> json) => _$TrialFromJson(json);
  Map<String, dynamic> toJson() => _$TrialToJson(this);
}

我想解码/编码这些项目的列表,但我不知道该怎么做,所以我创建了一个新类:

@JsonSerializable()
class TrialList {
  final List<Trial> trials;
  TrialList({this.trials});
  factory TrialList.fromJson(List json) => _$TrialListFromJson(json);
  List toJson() => _$TrialListToJson(this);
}

注意这个新类中的List toJson()。似乎 Json_serializable 只希望我解码/编码地图,有没有办法支持列表?

标签: jsonflutterdartjson-serializable

解决方案


解决方案:

@JsonSerializable()
class TrialList {
  final List<Trial> trials;
  TrialList({this.trials});
  factory TrialList.fromJson(json) => _$TrialListFromJson({'trials': json});
  List toJson() => _$TrialListToJson(this)['trials'];
}

归功于 /r/FlutterDev discord 中的 Null


推荐阅读