A JsonSerializer interface for any model that is serializable (to Map<String, dynamic> and back).

Usage

class MyModel{
  final String myProperty;
  
  MyModel({required this.myProperty});
}

class MySerializer implements JsonSerializer<MyModel>{
  Map<String, dynamic> toJson(MyModel data) => {
    "myProperty": data.myProperty
  };

  MyModel fromJson(Map<String, dynamic> json) 
    => MyModel(myProperty: json["myProperty"] ?? "");
}

// use the serializer
final Map<String, dynamic> json = fetchFromDb();
final MyModel = MySerializer().fromJson(json);