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

JavaScript解析JSON:如何遍历D3.D3-00.DATETIME?当前报错NaN

获取JSON中D3.D3-00.DATETIME值的解决方法

问题描述

给定如下JSON数据:

{
  "D3": {
    "D3-00": {
      "DATETIME": "01-11-2022 17:00:25",
      "MECHANISM": "",
      "B2": {
        "DATETIME": "01-11-2022 00:00:00",
        "MECHANISM": "Auto"
      }
    }
  }
}

需要获取D3.D3-00.DATETIME的值,但操作时出现NaN错误。

解决方法

出现NaN错误的核心原因是:用点语法访问带连字符的键(比如obj.D3.D3-00)时,连字符会被JavaScript解析成减法运算,导致计算错误返回NaN。正确操作如下:

直接获取值(无需遍历)

如果确定键的层级结构,直接用方括号语法访问带特殊字符的键即可:

// 假设JSON已解析为JS对象data
const datetime = data.D3["D3-00"].DATETIME;
console.log(datetime); // 输出:01-11-2022 17:00:25

遍历层级获取(动态场景)

如果需要动态遍历不确定的层级,可以用循环实现嵌套值获取:

function getNestedValue(obj, keyPath) {
  let current = obj;
  for (const key of keyPath) {
    if (!current || typeof current !== 'object') {
      return null; // 路径不存在时返回null
    }
    current = current[key];
  }
  return current;
}

// 使用示例
const targetValue = getNestedValue(data, ['D3', 'D3-00', 'DATETIME']);
console.log(targetValue); // 输出:01-11-2022 17:00:25

关键注意事项

  • 确保JSON已通过JSON.parse()正确解析为JavaScript对象,直接操作JSON字符串会导致错误。
  • 所有带连字符、空格或数字开头的键,都必须用方括号语法访问,不能用点语法。

内容的提问来源于stack exchange,提问作者Aksheet-Goku

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:55:25