Flutter Deeplink问题:调用jsonEncode时出现错误
Flutter Deeplink开发中jsonEncode调用报错的解决方案
从错误截图可知,报错信息为:Converting object to an encodable object failed: Instance of 'Uri',原因是Dart默认JSON编码器无法直接序列化Uri类型的实例。
以下是几种可行的解决方法:
将
Uri对象转换为字符串后再序列化:Uri deeplinkUri = Uri.parse("your_deeplink_url"); String jsonStr = jsonEncode(deeplinkUri.toString());自定义JSON编码器的处理逻辑,适配
Uri类型:Uri deeplinkUri = Uri.parse("your_deeplink_url"); String jsonStr = jsonEncode( deeplinkUri, toEncodable: (obj) { if (obj is Uri) { return obj.toString(); } // 其他类型保持默认处理逻辑 return obj; }, );若
Uri是自定义类的属性,给类添加toJson方法实现自定义序列化:class DeeplinkInfo { final Uri link; final String description; DeeplinkInfo(this.link, this.description); // 自定义序列化逻辑 Map<String, dynamic> toJson() { return { 'link': link.toString(), 'description': description, }; } } // 使用时直接序列化对象 DeeplinkInfo info = DeeplinkInfo(Uri.parse("your_deeplink_url"), "测试链接"); String jsonStr = jsonEncode(info);
内容的提问来源于stack exchange,提问作者Yousuf alharrasi
相关产品推荐
相关产品推荐

