flutter - Json解析失败_InternalLinkedHashMap' 不是 'String 类型的子类型
问题描述
我想解析这个 API 响应:
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"image": "https://asasas"
},
{
"image": "https://xxzx"
}
]
}
模型 :
class SliderModel {
final String count;
final List<Result> results;
SliderModel({this.count, this.results});
factory SliderModel.fromJson(Map<String, dynamic> parsedJson) {
var list = parsedJson['results'] as List;
List<Result> imagesList = list.map((i) => Result.fromJson(i)).toList();
return SliderModel(
count: parsedJson['count'],
results: imagesList
);
}
}
class Result {
final String image;
Result({this.image});
factory Result.fromJson(Map<String, dynamic> parsedJson) {
return Result(
image: parsedJson['image']
);
}
}
和调用方法:
Future<SliderModel> _loadSlider() async{
try {
Response response = await Dio().get("https://dasas/api/slider/");
print("11111"); // printing
SliderModel slider = SliderModel.fromJson(json.decode(response.data));
print("2222222222222"); // doesn't print throws error
return slider;
} catch (e) {
print("error $e");
}
}
当我尝试运行此代码时,它会抛出此消息:
type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String'
解决方案
看看这个方法:
factory SliderModel.fromJson(Map<String, dynamic> parsedJson) {
var list = parsedJson['results'] as List;
List<Result> imagesList = list.map((i) => Result.fromJson(i)).toList();
return SliderModel(
count: parsedJson['count'],
results: imagesList
);
}
list
是一个动态列表(List<dynamic>)。所以在.map
它仍然是 List 之后。
解决方案:指定map的返回类型。
List<Result> imagesList = list.map<Result>((i) => Result.fromJson(i)).toList();
推荐阅读
- confluent-platform - RowSubscriber 如何判断窗口的第一条记录何时到达?
- css - 选择选项在我的控制台中完美运行时无法以我的模态形式工作
- jquery - ASP.NET Core + Antiforgery + jQuery Ajax POST + Nginx - 400 错误请求
- azure-data-explorer - Kusto - 使用解析运算符将字符串字段提取到新列中
- node.js - 如何在 API 网关中设置响应模板以从错误中删除堆栈跟踪?
- python - 从 Python 中的段错误中恢复
- nullpointerexception - 在我的服务集成中,我在实例化另一个服务的类时发现了 NullPointerException
- javascript - TypeError:无法读取 null 的属性“项目”
- python - 如何合并存储在列表中的几个数组
- c# - 如何修复无法从另一个 Thread 访问 Thread 元素的问题