switch to using `dart:convert` for JSON serialization