deserialize method
AnyOf
deserialize(
- Serializers serializers,
- Object serialized, {
- FullType specifiedType = FullType.unspecified,
override
Deserializes serialized
.
serialized
is a boolean, an integer, a double or a String.
Use serializers
as needed for nested deserialization. Information about
the type being deserialized is provided in specifiedType
.
Implementation
@override
AnyOf deserialize(Serializers serializers, Object serialized,
{FullType specifiedType = FullType.unspecified}) {
//deserialize the object without knowing the type
final types = specifiedType.parameters.map((e) => e.root!).toList();
if (specifiedType.parameters.isEmpty) {
throw UnsupportedError('Provide possible types in parameters');
}
final values = <int, Object?>{};
for (var i = 0; i < specifiedType.parameters.length; i++) {
final type = specifiedType.parameters[i];
try {
final _v = serializers.deserialize(serialized, specifiedType: type);
values[i] = _v;
} catch (e) {
continue;
}
}
if (values.isEmpty) {
throw UnsupportedError(
'failed to deserialize to any of the provided types: $specifiedType');
}
return AnyOfDynamic(
types: types,
values: values,
);
}