无法反序列化带有 Dart 冻结和 json_serializable 的嵌套泛型类

问题描述

我有一个类首先定义为:

@freezed
class First<T> with _$First<T> {
  @JsonSerializable(explicitToJson: true)
  factory First({
    required String a,@BConverter() required T b,}) = _First<T>;

  factory First.fromJson(Map<String,dynamic> json) => _$FirstFromJson(json);
}

其中 BConverter() 是一个 JsonConverter。 到目前为止一切顺利,代码生成工作没有问题。

此时,我需要将类 First 添加到其他两个类中,如下所示:

@freezed
class Second with _$Second {
  @JsonSerializable(explicitToJson: true)
  factory Second({
    required String c,@Default(<First<SomeClass>>[]) List<First<SomeClass>> d,}) = _Second;

  factory Second.fromJson(Map<String,dynamic> json) => _$SecondFromJson(json);
}
@freezed
class Third with _$Third {
  @JsonSerializable(explicitToJson: true)
  factory Third({
    required String x,@Default(<First<SomeOtherClass>>[]) List<First<SomeOtherClass>> e,}) = _Third;

  factory Third.fromJson(Map<String,dynamic> json) => _$ThirdFromJson(json);
}

在后两种情况下,json_serializable 部分的代码生成失败并报错:

The argument type 'List<First<dynamic>>' can't be assigned to the parameter type 'List<First<SomeClass>>'

The argument type 'List<Second<dynamic>>' can't be assigned to the parameter type 'List<Second<SomeOtherClass>>'

错误是在.g.dart文件中产生的:

_$_Second _$_$_SecondFromJson(Map<String,dynamic> json) {
  return _$_Second(
    d: (json['d'] as List<dynamic>)
        .map((e) => First.fromJson(e as Map<String,dynamic>))
        .toList(),);
}

在这里错过了什么?我做错了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)