Flutter中@JsonSerializable能否自动处理List泛型的JSON序列化映射?
问题解答
首先明确结论:不需要开发者手动遍历转换Movie类型列表,但需要先完成嵌套类的序列化配置,才能让json_serializable自动完成列表转换,你遇到的类型报错就是因为缺少嵌套类的配置导致的。
具体操作步骤
- 第一步:给
Movie类添加@JsonSerializable()注解,同时实现对应的fromJson工厂方法和toJson实例方法,和你当前Content类的写法一致。只有给嵌套的自定义类型也加上序列化配置,json_serializable才能识别如何将接口返回的Map<String, dynamic>对象转换为Movie实例。 - 第二步:重新执行序列化文件生成命令,覆盖旧的生成文件:
flutter pub run build_runner build --delete-conflicting-outputs
报错原因说明
你遇到的_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String'报错,本质是json_serializable在没有找到Movie类的序列化逻辑时,会默认尝试将Map对象强转为它能识别的基础类型(比如String),最终触发类型不匹配的异常,只要完成上述配置就可以解决问题。
内容的提问来源于stack exchange,提问作者Abraham Mathew
相关产品推荐
相关产品推荐

