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

Flutter中Chucker库JSON编码异常问题求助

解决Chucker与Dio v5.x兼容的JSON编码问题

以下是几种可行的解决思路,按优先级排序:

  • 给自定义ApiResponse类添加序列化方法
    如果你的ApiResponse是自定义实体类,直接给它实现toJson()方法,让Chucker能自动将其转为可编码的Map对象:

    class ApiResponse<T> {
      final int code;
      final String message;
      final T data;
    
      ApiResponse({required this.code, required this.message, required this.data});
    
      Map<String, dynamic> toJson() {
        return {
          'code': code,
          'message': message,
          'data': (data is dynamic && data is! String && data is! num && data is! bool) 
              ? (data as dynamic).toJson() 
              : data,
        };
      }
    }
    
  • 自定义Chucker的JSON转换器
    给ChuckerDioInterceptor传入自定义的jsonConverter参数,手动处理ApiResponse的序列化逻辑:

    final chuckerInterceptor = ChuckerDioInterceptor(
      jsonConverter: (data) {
        if (data is ApiResponse) {
          return {
            'code': data.code,
            'message': data.message,
            'data': data.data,
            // 根据你的ApiResponse结构补充其他字段
          };
        }
        // 其他类型保持默认处理
        return data;
      },
    );
    
  • 升级Chutter到适配Dio v5的版本
    你当前使用的chucker_flutter: ^1.8.0可能对Dio v5的兼容性不足,尝试升级到最新稳定版(比如v2.x系列),修改pubspec.yaml:

    chucker_flutter: ^2.0.0 # 请确认最新兼容版本
    
  • 前置拦截器转换响应数据
    在Chucker拦截器之前添加一个自定义拦截器,先把ApiResponse转为可序列化的对象,再交给Chucker处理:

    class ResponseTransformInterceptor extends Interceptor {
      @override
      void onResponse(Response response, ResponseInterceptorHandler handler) {
        if (response.data is ApiResponse) {
          response.data = {
            'code': response.data.code,
            'message': response.data.message,
            'data': response.data.data,
          };
        }
        super.onResponse(response, handler);
      }
    }
    
    // 配置顺序:先加转换拦截器,再加Chucker拦截器
    dio.interceptors.add(ResponseTransformInterceptor());
    dio.interceptors.add(chuckerInterceptor);
    

内容的提问来源于stack exchange,提问作者diodii

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:13:18