deserialize<T> method

T deserialize<T>(
  1. dynamic data, [
  2. Type? t
])

Deserialize the provided json data to an object of type t or T.

Implementation

T deserialize<T>(dynamic data, [Type? t]) {
  t ??= T;

  if (_isNullableType<int>(t)) {
    return data;
  } else if (_isNullableType<double>(t)) {
    return (data as num?)?.toDouble() as T;
  } else if (_isNullableType<String>(t)) {
    return data;
  } else if (_isNullableType<bool>(t)) {
    if (data == null) return null as T;
    return BoolJsonExtension.fromJson(data) as T;
  } else if (_isNullableType<DateTime>(t)) {
    if (data == null) return null as T;
    return DateTimeJsonExtension.fromJson(data) as T;
  } else if (_isNullableType<ByteData>(t)) {
    if (data == null) return null as T;
    return ByteDataJsonExtension.fromJson(data) as T;
  } else if (_isNullableType<Duration>(t)) {
    if (data == null) return null as T;
    return DurationJsonExtension.fromJson(data) as T;
  } else if (_isNullableType<UuidValue>(t)) {
    if (data == null) return null as T;
    return UuidValueJsonExtension.fromJson(data) as T;
  } else if (_isNullableType<Vector>(t)) {
    if (data == null) return null as T;
    return VectorJsonExtension.fromJson(data) as T;
  } else if (_isNullableType<HalfVector>(t)) {
    if (data == null) return null as T;
    return HalfVectorJsonExtension.fromJson(data) as T;
  } else if (_isNullableType<SparseVector>(t)) {
    if (data == null) return null as T;
    return SparseVectorJsonExtension.fromJson(data) as T;
  } else if (_isNullableType<Bit>(t)) {
    if (data == null) return null as T;
    return BitJsonExtension.fromJson(data) as T;
  } else if (_isNullableType<Uri>(t)) {
    if (data == null) return null as T;
    return Uri.parse(data) as T;
  } else if (_isNullableType<BigInt>(t)) {
    if (data == null) return null as T;
    return BigInt.parse(data) as T;
  }

  throw DeserializationTypeNotFoundException(
    type: t,
  );
}