use json.Marshal directly