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

Flutter解析资源JSON到Model类时出现类型不匹配异常

解决Flutter JSON解析错误:type 'String' is not a subtype of type 'Map<String, dynamic>'

你的错误根源是重复编码了JSON字符串,导致解码后得到的不是期望的Map类型,而是原始的JSON字符串本身。

问题分析

  1. rootBundle.loadString('asset/hotel.json') 已经获取到了格式正确的JSON字符串
  2. 你额外执行了 jsonEncode(data),这会把原本的JSON字符串转成一个被转义的字符串(比如原JSON {"key":"val"} 会变成 "{\\"key\\":\\"val\\"}")
  3. 再对这个转义后的字符串执行 json.decode,得到的结果还是最初的JSON字符串,而非Map<String, dynamic>,所以传给Package.fromJson时就会抛出类型不匹配的异常

修正后的代码

直接对加载到的JSON字符串执行解码即可,去掉多余的jsonEncode步骤:

loadJson() async {
    String data = await rootBundle.loadString('asset/hotel.json');
    // 直接解码原始JSON字符串
    Map<String, dynamic> valueMap = json.decode(data);  
    Package user = Package.fromJson(valueMap);

    print(user.packageName); // 输出: Flexi Package
}

额外说明

你的Package模型类的fromJson方法是正确的,JSON里的所有字段都是字符串类型,直接赋值完全匹配,不需要额外类型转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:05:44