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

Flutter/Dart如何从JSON中提取指定二级键对应的所有值

Flutter/Dart如何提取JSON中二级键的所有值

需求说明

需要提取JSON中所有total键对应的取值,最终得到形如409571117, 410559043, 411028977, 411287235的结果。

示例JSON结构

{"country":"USA","timeline":
[{"total":409571117,"daily":757824,"totalPerHundred":121,"dailyPerMillion":2253,"date":"10/14/21"},
{"total":410559043,"daily":743873,"totalPerHundred":122,"dailyPerMillion":2212,"date":"10/15/21"},    
{"total":411028977,"daily":737439,"totalPerHundred":122,"dailyPerMillion":2193,"date":"10/16/21"},    
{"total":411287235,"daily":731383,"totalPerHundred":122,"dailyPerMillion":2175,"date":"10/17/21"}]}

已掌握的基础逻辑

目前已可以实现一级数组的键值提取,参考代码如下:

final list = [
  {'id': 1, 'name': 'flutter', 'title': 'dart'},
  {'id': 35, 'name': 'flutter', 'title': 'dart'},
  {'id': 93, 'name': 'flutter', 'title': 'dart'},
  {'id': 82, 'name': 'flutter', 'title': 'dart'},
  {'id': 28, 'name': 'flutter', 'title': 'dart'},
];

final idList = list.map((e) => e['id']).toList(); // [1, 35, 93, 82, 28]

解决方案

你已经掌握的一级数组提取逻辑完全可以复用,只需要先从顶层JSON中取出二级的timeline数组,再对该数组做map提取即可,完整实现代码如下:

import 'dart:convert';

void main() {
  // 原始JSON字符串
  String jsonSource = '''
  {"country":"USA","timeline":
  [{"total":409571117,"daily":757824,"totalPerHundred":121,"dailyPerMillion":2253,"date":"10/14/21"},
  {"total":410559043,"daily":743873,"totalPerHundred":122,"dailyPerMillion":2212,"date":"10/15/21"},    
  {"total":411028977,"daily":737439,"totalPerHundred":122,"dailyPerMillion":2193,"date":"10/16/21"},    
  {"total":411287235,"daily":731383,"totalPerHundred":122,"dailyPerMillion":2175,"date":"10/17/21"}]}
  ''';

  // 解码JSON为Dart对象
  Map<String, dynamic> jsonData = jsonDecode(jsonSource);
  // 取出二级数组timeline
  List<dynamic> timeline = jsonData['timeline'];
  // 提取所有total值,添加空安全判断避免异常
  List<int> totalList = timeline.map((item) => item['total'] as int? ?? 0).toList();
  
  // 如需转成逗号分隔的字符串,直接调用join方法
  String totalResult = totalList.join(', ');
  print(totalResult); // 输出结果:409571117, 410559043, 411028977, 411287235
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:15:02