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

如何使用JavaScript访问API返回JSON对象的最后一个动态键

问题原因
  • JSONObject.timeline.cases[1]无法取到目标值,是因为timeline.cases是键值对结构的普通对象,不是数组。方括号索引仅支持按顺序下标读取数组元素,且不同解析环境对普通对象的键遍历顺序没有强制一致性保障,靠下标取对象值本身逻辑就不可靠。
  • JSONObject.timeline.6/9/22不符合语法规范,是因为点操作符读取属性要求键名必须是合法标识符,不能以数字开头,也不能包含/这类特殊字符。
  • 硬编码日期键名的写法无法适配接口每日更新的规则,接口返回新日期后写死的键就会匹配不到数据。
正确实现方式

已知目标键名的写法

对于包含特殊字符、数字开头的键,统一使用方括号+字符串键名的语法读取属性即可,示例代码:

// 读取6/9/22对应的确诊数据
const targetCases = JSONObject.timeline.cases["6/9/22"]
// 读取同日期的死亡、治愈数据
const targetDeaths = JSONObject.timeline.deaths["6/9/22"]
const targetRecovered = JSONObject.timeline.recovered["6/9/22"]

动态键(不硬编码日期)的写法

如果需要适配接口每日更新的动态日期键,可以先读取对应对象下的全部键名,筛选出目标键后再取值,不需要硬编码固定日期,示例:

// 获取cases下所有日期键
const allDateKeys = Object.keys(JSONObject.timeline.cases)

// 示例1:取最新日期对应的数据,先把日期转成时间戳排序,取最后一个即为最新
const sortedDateKeys = allDateKeys.sort((prev, next) => new Date(prev) - new Date(next))
const latestKey = sortedDateKeys.at(-1)
const latestCases = JSONObject.timeline.cases[latestKey]

// 示例2:按规则匹配目标键,不需要提前写死完整键名
const matchKey = allDateKeys.find(key => key === "6/9/22")
const targetCases = matchKey ? JSONObject.timeline.cases[matchKey] : null

注意:不要尝试靠下标顺序读取普通对象的属性,不同JSON解析库的键遍历规则存在差异,很容易取到错误日期对应的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:27:17