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

Flutter json_serializable配置正确但jsonEncode转换Block实例报错如何解决

问题根因

Dart内置的jsonEncode方法默认仅支持对数字、字符串、布尔、List、Map这些内置类型做序列化,它不会自动调用自定义类的toJson方法,所以直接传入Block实例就会抛出转换失败的错误。

正确使用方式

  • 方法1:序列化时手动调用类的toJson方法,这也是官方推荐的写法:
import 'dart:convert';

// 示例代码
Block myBlock = Block(...);
String jsonStr = jsonEncode(myBlock.toJson());
  • 方法2:给jsonEncode传入toEncodable参数,指定自定义类的序列化规则:
String jsonStr = jsonEncode(myBlock, toEncodable: (obj) {
  if (obj is Block) return obj.toJson();
  return obj;
});

其他需要排查的配置项

  • 确认你的代码中已经导入了dart:convert库,否则jsonEncode方法本身就会异常
  • 确认生成的block.g.dart文件名和part声明完全匹配,注意大小写,Linux/Mac系统文件名大小写敏感,写错会导致生成的代码不生效
  • 重新执行构建命令时建议加上清除冲突的参数,避免旧生成文件干扰:
flutter pub run build_runner build --delete-conflicting-outputs

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:06:03