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

Flutter中如何获取JSON映射的首个键值对指定字段值?

在Flutter中获取JSON映射的首个值

Hey,我来帮你搞定这个问题!你现在的代码会遍历所有日期的数据,但其实完全不用这么麻烦——我们可以直接定位到Time Series (Daily)里的第一个键值对,提取你需要的high和low值就行。

核心思路

在Dart(Flutter的开发语言)里,Map类型有几个实用属性能帮我们快速拿到首个元素:

  • entries:返回所有键值对的可迭代集合,直接取.first就能拿到第一个键值对
  • keys:返回所有键的集合,取.first拿到第一个日期键,再通过键获取对应的数据

具体实现

下面给你两种可行的写法,选哪种都可以:

写法一:直接获取首个键值对

JSONObject json = await timeSeries.getDaily(stock);
// 先把Daily数据转成明确的Map类型
var dailyData = json.getJSONMap()["Time Series (Daily)"] as Map<String, dynamic>;

if (dailyData.isNotEmpty) {
  // 拿到第一个键值对
  var firstDailyEntry = dailyData.entries.first;
  var firstDayDetails = firstDailyEntry.value;
  
  // 提取你需要的high和low
  double highValue = double.parse(firstDayDetails["2. high"]);
  double lowValue = double.parse(firstDayDetails["3. low"]);
  
  // 这里就可以用这两个值做后续处理啦
  print("最新日期: ${firstDailyEntry.key}, 最高价: $highValue, 最低价: $lowValue");
} else {
  // 处理数据为空的情况
  print("未获取到每日时间序列数据");
}

写法二:通过首个键获取对应数据

JSONObject json = await timeSeries.getDaily(stock);
var dailyData = json.getJSONMap()["Time Series (Daily)"] as Map<String, dynamic>;

if (dailyData.isNotEmpty) {
  // 拿到第一个日期键
  String firstDate = dailyData.keys.first;
  var firstDayDetails = dailyData[firstDate];
  
  double highValue = double.parse(firstDayDetails["2. high"]);
  double lowValue = double.parse(firstDayDetails["3. low"]);
  
  print("$firstDate 的最高价: $highValue, 最低价: $lowValue");
} else {
  print("没有可用的每日数据");
}

小提醒

一定要加dailyData.isNotEmpty的判断哦!如果接口返回的Time Series (Daily)是空的,直接调用.first会抛出异常,加个判断能让你的代码更健壮。另外,Dart里默认的Map(LinkedHashMap)会保留插入顺序,所以这里的"第一个"就是JSON里最靠前的那个日期数据~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:27:40