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

Flutter中Json编码为字符串列表失败:Converting object to encodable object错误

解决「Converting object to an encodable object」JSON编码错误

你遇到的这个错误是因为JSON编码器无法序列化非可编码对象,具体问题出在两个地方:

1. CartModel的toJson方法中未调用ProductModel的toJson函数

在CartModel的toJson方法里,product字段你写的是this.product!.toJson,这是把函数本身赋值给了字段,而不是调用函数得到返回的Map对象。jsonEncode无法序列化函数类型,所以触发了错误。

修复代码:

Map<String, dynamic> toJson() {
  return {
    "id": this.id,
    "name": this.name,
    "price": this.price,
    "img": this.img,
    "quantity": this.quantity,
    "isExist": this.isExist,
    "time": this.time,
    "product": this.product!.toJson(), // 加上括号,调用函数获取Map
  };
}

2. CartModel的fromJson方法中isExist的key多了空格

在CartModel.fromJson里,你写的是this.isExist = json['isExist '];,key后面多了一个空格,这样反序列化时会找不到对应的值,导致isExist始终为null。

修复代码:

CartModel.fromJson(Map<String, dynamic> json) {
  this.id = json['id'];
  this.name = json['name'];
  this.price = json['price'];
  this.img = json['img'];
  this.quantity = json['quantity'];
  this.isExist = json['isExist']; // 去掉key后面的空格
  this.time = json['time'];
  this.product = ProductModel.fromJson(json['product']);
}

验证修复

修改完这两处后,重新调用addToCartList方法,JSON编码就能正常进行,SharedPreferences也能正确存储String列表了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:20:32