Dart 反序列化的类型未知。需要指定的类型或鉴别器字段

Dart 反序列化的类型未知。需要指定的类型或鉴别器字段,dart,flutter,Dart,Flutter,我有以下几个问题 { "status": 1, "msg": "Success", "data": { "getFeeCount": [ { "yearId": "1", "yearName": "FY 2017-18" }, { "yearId": "2",

我有以下几个问题

{
    "status": 1,
    "msg": "Success",
    "data": {
        "getFeeCount": [
            {
                "yearId": "1",
                "yearName": "FY 2017-18"
            },
            {
                "yearId": "2",
                "yearName": "FY 2018-19"
            }
        ],
        "getFeeCat": [
            {
                "fee_cat_id": "1",
                "fee_cat_name": "1st Semester Tuition Fee"
            },
            {
                "fee_cat_id": "2",
                "fee_cat_name": "2nd Semester Tuition Fee"
            },
            {
                "fee_cat_id": "3",
                "fee_cat_name": "3rd Semester Tuition Fee"
            },
            {
                "fee_cat_id": "4",
                "fee_cat_name": "4th Semester Tuition Fee"
            },
            {
                "fee_cat_id": "5",
                "fee_cat_name": "5th Semester Tuition Fee"
            },
            {
                "fee_cat_id": "6",
                "fee_cat_name": "6th Semester Tuition Fee"
            },
            {
                "fee_cat_id": "7",
                "fee_cat_name": "7th Semester Tuition Fee"
            },
            {
                "fee_cat_id": "8",
                "fee_cat_name": "8th Semester Tuition Fee"
            },
            {
                "fee_cat_id": "9",
                "fee_cat_name": "Certification Fee Year 1"
            },
            {
                "fee_cat_id": "10",
                "fee_cat_name": "Certification Fee Year 2"
            },
            {
                "fee_cat_id": "11",
                "fee_cat_name": "Certification Fee Year 3"
            },
            {
                "fee_cat_id": "12",
                "fee_cat_name": "Certification Fee Year 4"
            }
        ]
    }
}
我在我的项目中使用构建价值

library dashboard_fiscal_year_model;

import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart';

part 'dashboard_fiscal_year_model.g.dart';

abstract class DashboardFiscalYearModel
    implements
        Built<DashboardFiscalYearModel, DashboardFiscalYearModelBuilder> {
  DashboardFiscalYearModel._();

  factory DashboardFiscalYearModel(
          [updates(DashboardFiscalYearModelBuilder b)]) =
      _$DashboardFiscalYearModel;

  @BuiltValueField(wireName: 'status')
  int get status;
  @BuiltValueField(wireName: 'msg')
  String get msg;
  @BuiltValueField(wireName: 'data')
  DashboardFiscalYearData get data;

  static Serializer<DashboardFiscalYearModel> get serializer =>
      _$dashboardFiscalYearModelSerializer;
}

abstract class DashboardFiscalYearData
    implements Built<DashboardFiscalYearData, DashboardFiscalYearDataBuilder> {
  DashboardFiscalYearData._();

  factory DashboardFiscalYearData([updates(DashboardFiscalYearDataBuilder b)]) =
      _$DashboardFiscalYearData;

  @BuiltValueField(wireName: 'getFeeCount')
  BuiltList<GetFeeCount> get getFeeCount;
  @BuiltValueField(wireName: 'getFeeCat')
  BuiltList<GetFeeCat> get getFeeCat;

  static Serializer<DashboardFiscalYearData> get serializer =>
      _$dashboardFiscalYearDataSerializer;
}

abstract class GetFeeCount implements Built<GetFeeCount, GetFeeCountBuilder> {
  GetFeeCount._();

  factory GetFeeCount([updates(GetFeeCountBuilder b)]) = _$GetFeeCount;

  @nullable
  @BuiltValueField(wireName: 'yearId')
  String get yearId;
  @nullable
  @BuiltValueField(wireName: 'yearName')
  String get yearName;

  static Serializer<GetFeeCount> get serializer => _$getFeeCountSerializer;
}

abstract class GetFeeCat implements Built<GetFeeCat, GetFeeCatBuilder> {
  GetFeeCat._();

  factory GetFeeCat([updates(GetFeeCatBuilder b)]) = _$GetFeeCat;

  @nullable
  @BuiltValueField(wireName: 'fee_cat_id')
  String get feeCatId;
  @nullable
  @BuiltValueField(wireName: 'fee_cat_name')
  String get feeCatName;
}
库仪表板\财务\年度\模型;
导入“package:Build_collection/Build_collection.dart”;
导入“package:build_value/build_value.dart”;
导入“package:builded_value/serializer.dart”;
“仪表板、财政年度、车型g.dart”部分;
抽象类仪表板财务模型
工具
建造{
仪表板财务模型。uz();
工厂仪表板财务模型(
[更新(仪表板FiscalyearModelBuilder b)])=
_$DashboardFiscalYearModel;
@BuiltValueField(wireName:“状态”)
int获取状态;
@BuiltValueField(wireName:'msg')
字符串获取消息;
@BuiltValueField(wireName:“数据”)
仪表板财务数据获取数据;
静态序列化程序获取序列化程序=>
_$dashboardFiscalYearModelSerializer;
}
抽象类DashboardFiscalYearData
制造工具{
仪表板财务数据。uz();
factory仪表板FiscalyearData([更新(仪表板FiscalyearDataBuilder b)])=
_$DashboardFiscalYearData;
@BuiltValueField(wireName:'getFeeCount')
BuiltList获取getFeeCount;
@BuiltValueField(wireName:'getFeeCat')
BuiltList获取getFeeCat;
静态序列化程序获取序列化程序=>
_$dashboardFiscalYearDataSerializer;
}
抽象类GetFeeCount实现构建{
GetFeeCount.uz();
工厂GetFeeCount([更新(GetFeeCountBuilder b)])=\u$GetFeeCount;
@可空
@BuiltValueField(wireName:'yearId')
字符串获取yearId;
@可空
@BuiltValueField(wireName:'DreamName')
字符串获取名称;
静态序列化程序get Serializer=>\u$getFeeCountSerializer;
}
抽象类GetFeeCat实现已构建{
GetFeeCat.uz();
工厂GetFeeCat([更新(GetFeeCatBuilder b)])=\u$GetFeeCat;
@可空
@BuiltValueField(wireName:“费用类别id”)
弦得到触感;
@可空
@BuiltValueField(wireName:'费用\类别\名称')
字符串获取feeCatName;
}
但每当我运行我的应用程序时,我都会出现以下错误

[VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: Deserializing '[status, 1, msg, Success, data, {getFeeCount: [{yearId: 1, yearName: FY 2017-...' to 'DashboardFiscalYearModel' failed due to: Deserializing '[getFeeCount, [{yearId: 1, yearName: FY 2017-18}, {yearId: 2, yearName: FY 20...' to 'DashboardFiscalYearData' failed due to: Deserializing '[{fee_cat_id: 1, fee_cat_name: 1st Semester Tuition Fee}, {fee_cat_id: 2, fee...' to 'BuiltList<GetFeeCat>' failed due to: Invalid argument(s): Unknown type on deserialization. Need either specifiedType or discriminator field.
#0      BuiltJsonSerializers._deserialize (package:built_value/src/built_json_serializers.dart:154:11)
#1      BuiltJsonSerializers.deserialize (package:built_value/src/built_json_serializers.dart:105:18)
#2      BuiltJsonSerializers.deserializeWith (package:built_value/src/built_json_serializers.dart:35:12)
#3      DashboardDropDownApiProvider.getFiscalYear (package:dice_admin/resources/dashboard/dashboard_fiscal_year/dashboard_fi<…>
[VERBOSE-2:shell.cc(178)] Dart Error: Unhandled exception:
'dart:isolate/runtime/libtimer_impl.dart': Failed assertion: line 433: '<optimized out>': is not true.
#0      _AssertionError._doThrowNew (dart:core/runtime/liberrors_patch.dart:40:39)
#1      _AssertionError._throwNew (dart:core/runtime/liberrors_patch.dart:36:5)
#2      _Timer._cancelWakeup (dart:isolate/runtime/libtimer_impl.dart:433:12)
#3      _Timer._notifyEventHandler (dart:isolate/runtime/libtimer_impl.dart:299:7)
#4      _Timer._handleMessage (dart:isolate/runtime/libtimer_impl.dart:419:5)
#5      _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12)
[VERBOSE-2:ui_dart_state.cc(148)]未处理的异常:将“[status,1,msg,Success,data,{getFeeCount:[{yearId:1,向往名称:2017财年-…”反序列化为”[getFeeCount,[{yearId:1,向往名称:2017-18财年]失败,{yearId:2,ForearName:FY 20…'到'Dashboard FiscalyearData'失败,原因是:反序列化'[{fee_cat_id:1,fee_cat_name:1st Sember fee},{fee_cat_id:2,fee…'到'BuiltList'失败,原因是:参数无效:反序列化时类型未知。需要指定类型或鉴别器字段。
#0个BuiltJSonSerializer.\u反序列化(包:build\u value/src/build\u json\u serializers.dart:154:11)
#1 BuiltJsonSerializers.deserialize(包:build_value/src/build_json_serializers.dart:105:18)
#2 BuiltJsonSerializers.deserializeWith(包:build_value/src/build_json_serializers.dart:35:12)
#3 dashboard DropDownApiprovider.getFiscaleEAR(包:dice_admin/resources/dashboard/dashboard_fiscal_year/dashboard_fi
[VERBOSE-2:shell.cc(178)]Dart错误:未处理的异常:
“dart:isolate/runtime/libtimer_impl.dart”:失败的断言:第433行:“”:不正确。
#0断言错误。doThrowNew(dart:core/runtime/liberror\u patch.dart:40:39)
#1 AssertionError.throwNew(dart:core/runtime/liberrors_patch.dart:36:5)
#2计时器。取消唤醒(dart:isolate/runtime/libtimer\u IMPLL.dart:433:12)
#3 \u Timer.\u notifyEventHandler(dart:isolate/runtime/libtimer\u impl.dart:299:7)
#4 _Timer._handleMessage(dart:isolate/runtime/libtimer_impl.dart:419:5)
#5 _RawReceivePortImpl._handleMessage(dart:isolation/runtime/libisolation_patch.dart:171:12)
我已经多次重新生成代码,我认为序列化程序也映射正确

我浏览了这篇文章
它使用了一个自定义插件,生成值解决了这个问题,还是我需要使用自定义生成值?我忘了为GetFeeCat类添加
Serailizer