update to use dart:convert's JSON.encode/decode