Parses the response body as JSON and returns a Map.
Map<String, dynamic>? get jsonBody { try { return jsonDecode(body) as Map<String, dynamic>; } catch (_) { return null; } }