You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:19:54