JSONable Baseclass
Summary
We have quite a few classes that support (de)serialization (e.g. Task, Goal, Module). Maybe we could add a base class that formalizes these utililites.
Suggestion
Should be class to inherit from that formalizes:
- methods such as from_json_data, to_json_data giving them specific typing (e.g. for from_json_data: Iterable[Dict[str, any]] -> List[ReturnType])
- Typing: Define generic ReturnType that can be inherited by children; Named type such as JSONObject = Dict[str, any].
- Utilities: such as reading in from string (from_json_string).
/cc @JonathanKuelz