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
相关产品推荐
相关产品推荐

