1

我有这个对象:

abstract class ApiData<T> implements Built<ApiData<T>, ApiDataBuilder<T>> {
    int get offset;

    int get limit;

    int get total;

    int get count;

    BuiltList<T> get results;

    ApiData._();

    factory ApiData([void Function(ApiDataBuilder<T>) updates]) = _$ApiData<T>;

    static Serializer<ApiData> get serializer => _$apiDataSerializer;
}

这是我用来将响应的动态结果映射到ApiData对象的代码:

Future<ApiData<T>> mapDynamic<T>(dynamic value) async {
    return standardSerializers.deserializeWith<ApiData<T>>(
      ApiData.serializer,
      value,
    );
}

但我最终得到了这个错误:type '_$ApiDataSerializer' is not a subtype of type 'Serializer<ApiData<MyBuitValueAbstractObject>>'

我试图添加:

static Serializer<ApiData<MyBuitValueAbstractObject>> get apiMyObjectSerializer => _$apiDataMyObjectSerializer;

但这没有用。如何正确反序列化我的results

编辑 1 - 如果我使用standardSerializers.deserializeWith<ApiData>(没有<T>这个时间)我得到这个消息错误:

未处理的异常:反序列化'[offset,0,limit,20,total,2233,count,20,结果,[{...'到'ApiData'失败,原因是:反序列化'[{...'到'BuiltList'失败的原因是:无效的参数:反序列化时的类型未知。需要指定类型或鉴别器字段。

如何指定“鉴别器字段”的东西?

编辑 2 - 我现在找到了一个可以解决它的黑客,它不满足我,但我可以继续工作,直到找到合适的解决方案:https ://github.com/google/built_value.dart/issues/368#问题comment-486567646

4

0 回答 0