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

如何在JSON path中使用路径变量修改JSON对象指定属性

问题原因

JavaScript 原生对象的方括号访问语法obj[key]仅支持直接传入单层键名,不会自动解析带点分隔符的嵌套路径,因此你传入完整路径字符串时会被当做顶层新键处理,这是符合语法规则的表现。另外你示例中对象的属性是大写开头的Name,路径写first.name也会因为大小写不匹配找不到目标属性。

解决方案

方案1:原生手动实现路径解析函数(无第三方依赖)

你可以自己实现一个通用的嵌套路径赋值函数,逻辑是把路径按点拆分后逐层遍历对象到最后一级,再进行赋值:

const Data = {
    first:{
        "Name":"John",
        "Age":"43"
    }
}

let path = "first.Name" // 注意大小写和对象属性保持一致
let value = "Jan"

// 通用嵌套路径赋值函数
function setValueByPath(obj, path, value) {
  const keys = path.split('.')
  const lastKey = keys.pop()
  // 逐层遍历到目标属性的父级对象
  const target = keys.reduce((current, key) => {
    // 如果需要支持中间层不存在时自动初始化,可加上以下判断
    // if (!Object.hasOwn(current, key)) current[key] = {}
    return current[key]
  }, obj)
  target[lastKey] = value
}

setValueByPath(Data, path, value)
console.log(Data)

运行后即可得到你期望的输出结果。

方案2:使用第三方工具库

如果你的项目中已经引入了 Lodash 工具库,可以直接调用封装好的_.set方法,一行代码即可实现需求:

_.set(Data, path, value)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:45:05