如何将json_annotation与Dart Extended ListBase类一起使用

问题描述 投票:0回答:1

所以我有一个@JsonSerializable类正在完成工作而没有问题。

@JsonSerializable()
class BaseValue {
  String id;
  var value;
  DateTime valueDate;

  BaseValue({
    this.id,
    this.value,
    this.valueDate
  });
  factory BaseValue.fromJson(Map<String, dynamic> json) => _$BaseValueFromJson(json);
  Map<String, dynamic> toJson() => _$BaseValueToJson(this);
}

不,我想为扩展的ListBase类启用相同的fromJson toJson,但无法找到如何实现它。

class BaseValues<BaseValue> extends ListBase<BaseValue> {
  final List<BaseValue> l = [];
  BaseValues();

  void set length(newLength) => l.length = newLength;
  int get length => l.length;
  BaseValue operator [](int index) => l[index];
  void operator []=(int index, BaseValue value) => l[index] = value;
}

也许我需要使用其他东西而不是ListBase。

提前感谢您提供的任何帮助。

dart angular-dart
1个回答
0
投票

这是可能的,但这并不容易。您需要创建一个自定义TypeHelper来支持您的课程。

然后,如果你想使用pub run build_runner...,你需要创建一个自定义构建器来实例化JsonSerializableGenerator的实例并包含你的TypeHelper实例。

有一个挂起的提交将在这里给你一些更多的自由 - https://github.com/dart-lang/json_serializable/commit/4f19d468bf05eed3e4a8ebc27244fc3b8d411dc9 - 但你仍然需要处理BaseValues可能的泛型类型args。

© www.soinside.com 2019 - 2024. All rights reserved.