deserialize<T> method

T? deserialize<T>(
  1. dynamic jsonVal, [
  2. String? typeName
])

Implementation

T? deserialize<T>(dynamic jsonVal, [String? typeName]) {
  if (jsonVal == null) return null;
  final decodedJson = jsonVal is String ? json.decode(jsonVal) : jsonVal;
  final isList = _isList<T>(typeName);
  assert(!isList || (isList && decodedJson is List));
  if (isList) {
    final listCastFn = _listCasts[typeName ?? T.toString()];
    assert(listCastFn != null);
    final deserializedList = (decodedJson as List)
        .map((json) =>
            _deserializeFromMapWithType(typeName ?? T.toString(), json))
        .toList();
    return listCastFn != null ? listCastFn(deserializedList) as T : null;
  }

  return deserializeFromMap(decodedJson, typeName);
}