import 'dart:convert'; import 'dart:developer' as developer; abstract class SerializerDeserializer { T deserialize(dynamic json); Map serialize(); } Map> fromMapListJson(Map j, SerializerDeserializer ref) { var map = >{}; for (var key in j.keys) { if(j[key] != null) { map[key] = fromListJson(j[key], ref); } } return map; } Map fromMapJson(Map j, SerializerDeserializer ref) { var map = {}; for (var key in j.keys) { if(j[key] != null) { map[key] = ref.deserialize(json.decode(json.encode(j[key]))); } } return map; } List fromListJson(List jss, SerializerDeserializer ref) { var list = []; for (var js in jss) { list.add(ref.deserialize(json.decode(json.encode(js)))); } return list; } Map> toMapJson(Map json) { var map = >{}; for (var key in json.keys) { if(json[key] != null) { map[key] = json[key]!.serialize(); } } return map; } List> toListJson(List obj) { var list = >[]; for (var js in obj) { list.add(js.serialize()); } return list; }