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

Flutter拉取新闻API解析报错:_InternalLinkedHashMap不是List<dynamic>子类型

错误原因

你使用的stockdata新闻API返回的响应根结构为Map类型,代码中直接将json.decode结果强转为List触发了类型不匹配错误。

修复方案

修改getNews方法的JSON解析逻辑

接口的新闻列表存储在根Map的data字段中,需要先提取该字段再做转换,修复后代码:

Future<List<News>> getNews() async {
  final response = await http.get(Uri.parse(
      'https://api.stockdata.org/v1/news/all?&filter_entities=true&language=en&api_token=api_token&countries=in'));
  if (response.statusCode == 200) {
    Map<String, dynamic> rootJson = json.decode(response.body);
    // 提取新闻列表字段,空值 fallback 为空列表避免异常
    List jsonResponse = rootJson["data"] ?? [];
    return jsonResponse.map((data) => News.fromJSON(data)).toList();
  } else {
    throw Exception('Unexpected error occurred!');
  }
}

补充检查

确认页面initState中已初始化futureData,避免FutureBuilder一直停在加载状态:

@override
void initState() {
  super.initState();
  futureData = getNews();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:15:03