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

Flutter中如何将接口返回的Json数据转为列表?返回类型报错如何解决

问题原因

你的_getMetadata方法声明的返回值类型为Future<List<SongData>>,要求返回一个承载SongData类型列表的Future对象,但当前代码直接返回单个SongData实例,返回类型和实际返回值的类型不匹配,因此触发了类型校验错误。

解决方案

根据实际业务需求和接口返回结构,选择以下两种方案之一即可:

方案1:接口返回单条歌曲数据,无需列表

直接修改方法的返回类型声明为Future<SongData>,适配实际返回值类型:

Future<SongData> _getMetadata() async {
    Uri url = Uri.parse('https://radioactivefm.gr/live/api/getCoverJson.php');

    final response = await http.get(url);

    var data = jsonDecode(response.body);

    print('data: $data');
    return SongData.fromJson(data);
}

方案2:接口返回歌曲数组,确实需要返回列表

如果jsonDecode得到的data本身是数组类型,遍历数组每一项分别解析为SongData实例,再整合成列表返回:

Future<List<SongData>> _getMetadata() async {
    Uri url = Uri.parse('https://radioactivefm.gr/live/api/getCoverJson.php');

    final response = await http.get(url);

    var data = jsonDecode(response.body);

    print('data: $data');
    return (data as List).map((item) => SongData.fromJson(item)).toList();
}

如果不确定接口返回的结构,可以打印data.runtimeType查看解析后的数据类型,再对应调整逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:00:01