deserializeByClassName method

dynamic deserializeByClassName(
  1. Map<String, dynamic> data
)

Deserialize the provided json data by using the className stored in the data.

Implementation

dynamic deserializeByClassName(Map<String, dynamic> data) {
  var className = data['className'];
  var raw = data['data'];
  switch (className) {
    case 'null':
      return null;
    case 'int':
      return deserialize<int>(raw);
    case 'double':
      return deserialize<double>(raw);
    case 'String':
      return deserialize<String>(raw);
    case 'bool':
      return deserialize<bool>(raw);
    case 'DateTime':
      return deserialize<DateTime>(raw);
    case 'ByteData':
      return deserialize<ByteData>(raw);
    case 'Duration':
      return deserialize<Duration>(raw);
    case 'UuidValue':
      return deserialize<UuidValue>(raw);
    case 'Uri':
      return deserialize<Uri>(raw);
    case 'BigInt':
      return deserialize<BigInt>(raw);
    case 'Vector':
      return deserialize<Vector>(raw);
    case 'HalfVector':
      return deserialize<HalfVector>(raw);
    case 'SparseVector':
      return deserialize<SparseVector>(raw);
    case 'Bit':
      return deserialize<Bit>(raw);
    case 'List' when raw is List:
      return raw.map(deserializeDynamicFieldValue).toList();
    case 'Set' when raw is List:
      return raw.map(deserializeDynamicFieldValue).toSet();
    case 'Map' when raw is Map<String, dynamic>:
      return raw.map((k, v) => MapEntry(k, deserializeDynamicFieldValue(v)));
    case 'Map' when raw is List:
      return Map<dynamic, dynamic>.fromEntries(
        raw.cast<Map<String, dynamic>>().map(
          (e) => MapEntry(
            deserializeDynamicFieldValue(e['k']),
            deserializeDynamicFieldValue(e['v']),
          ),
        ),
      );
  }
  throw FormatException('No deserialization found for type named $className');
}