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

如何从RapidAPI的JSON响应中获取shows列表数据?

获取RapidAPI中shows数据的处理方法

首先得明确新接口返回的JSON结构——这是提取数据的核心前提。你可以先把返回的完整数据打印出来,或者在调试模式下查看层级:

Map data = jsonDecode(response.body);
print(data); // 打印完整结构,找到shows的位置

根据不同的JSON结构,对应不同的提取方式:

情况1:shows是results数组中每个元素的直接属性

如果返回结构类似:

{
  "results": [
    {"shows": [{"id": 1, "name": "show1"}, ...]},
    {"shows": [{"id": 2, "name": "show2"}, ...]}
  ]
}

可以用类似之前的循环逻辑,遍历results并提取shows:

Map data = jsonDecode(response.body);
List _temp = [];

// 先处理results为空的情况,避免报错
List results = data['results'] as List? ?? [];
for (var item in results) {
  // 取出当前item的shows数组,为空则跳过
  List? shows = item['shows'] as List?;
  if (shows != null) {
    _temp.addAll(shows); // 把所有shows合并到一个数组里
  }
}

// 最后用你的模型类转换数据
return Shows.showsFromSnapshot(_temp);

情况2:shows是顶层直接字段

如果返回结构里shows直接在根节点:

{
  "shows": [{"id": 1, "name": "show1"}, ...],
  "otherField": "xxx"
}

直接提取顶层的shows数组即可:

Map data = jsonDecode(response.body);
List showsList = data['shows'] as List? ?? [];
return Shows.showsFromSnapshot(showsList);

情况3:shows在嵌套层级中

如果shows藏在更深的层级,比如results -> item -> content -> shows,只需要调整取值路径:

for (var item in results) {
  var content = item['content'];
  if (content != null) {
    List? shows = content['shows'] as List?;
    if (shows != null) {
      _temp.addAll(shows);
    }
  }
}

注意事项

  • 一定要做空安全判断,避免接口返回null或字段缺失导致崩溃;
  • 如果shows不是数组而是单个对象,把addAll改成add即可;
  • 打印出来的JSON结构可以用编辑器的JSON插件整理,更清晰地看层级关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 17:47:10