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

Flutter:如何提取JSON响应体中的指定子节点seasons数据

提取JSON中的seasons子节点数据

嘿,这事儿其实挺简单的,你已经完成了HTTP请求和JSON解码的核心步骤,接下来只需要通过键名索引直接拿到seasons节点的数据就行~

完整代码示例

import 'dart:convert';
import 'package:http/http.dart' as http;

// 假设你的请求逻辑在这个异步方法里
Future<void> fetchSeasonsData(String url) async {
  final response = await http.get(Uri.parse(url));
  
  // 先确保请求成功,避免解码无效响应体
  if (response.statusCode == 200) {
    var json = jsonDecode(response.body);
    
    // 直接提取seasons节点,默认类型是List<dynamic>
    List<dynamic> seasons = json['seasons'];
    
    // 如果你需要更明确的类型(方便后续代码提示和类型安全),可以转成List<Map<String, dynamic>>
    List<Map<String, dynamic>> typedSeasons = List<Map<String, dynamic>>.from(json['seasons']);
    
    // 举个操作例子:打印当前活跃的赛季信息
    for (var season in typedSeasons) {
      if (season['current'] == true) {
        print("当前赛季:${season['year']},时间范围:${season['start']} 至 ${season['end']}");
      }
    }
  } else {
    // 处理请求失败的情况
    throw Exception('请求失败,状态码:${response.statusCode}');
  }
}

关键步骤说明

  • 先判断response.statusCode == 200是个好习惯,能避免在请求失败时解码无效的响应体;
  • json['seasons']会直接返回JSON结构中对应键的数组,默认类型为List<dynamic>;
  • 用List<Map<String, dynamic>>.from()转换类型,能让你在后续操作时获得更清晰的IDE代码提示,也能避免潜在的类型报错;
  • 如果你只是需要原始的seasons数组数据,那一行var seasons = json['seasons'];就足够满足需求啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 10:13:14