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

Dart解析嵌套JSON时报List<dynamic>不是String子类型错误如何解决

报错原因

你代码里的错误出在Pet类的allPetFromJson方法定义上:

  • 你给这个方法定义的入参是String jsonData,但在Person类的_mapPerson方法中调用它时,传入的是map['pets']——这个值是已经解码后的List<dynamic>类型的宠物数组,不是JSON字符串,自然会报「List不能转为String」的类型错误。
  • 另外allPetFromJson方法内部还额外做了一次json.decode、还尝试从根节点取['person']['pets'],完全不符合当前嵌套解析的逻辑。

修复方案

直接修改Pet类的allPetFromJson方法即可:

// 修改前
// static List<Pet> allPetFromJson(String jsonData) {
//   List<Pet> pet = [];
//   json.decode(jsonData)['person']['pets'].forEach((data) => pet.add(_mapPet(data)));
//   return pet;
// }

// 修改后
static List<Pet> allPetFromJson(List<dynamic> petsList) {
  List<Pet> pet = [];
  for (var petItem in petsList) {
    pet.add(_mapPet(petItem));
  }
  return pet;
}

修改后重新运行代码,即可正常嵌套打印Person和对应的Pet信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:39:02