You need to enable JavaScript to run this app. Node.js 解析 TOML 得到的 JSON 对象新增字段不生效且无报错
优惠活动
大模型
产品
解决方案
定价
更多

Node.js 解析 TOML 得到的 JSON 对象新增字段不生效且无报错

问题原因定位

核心本质

你在non-production.toml中定义的pack.c是包裹在引号内的JSON格式字符串,而非经过TOML解析的结构化JS对象。
TOML解析完成后,t.Jira.pack.c的实际数据类型是字符串,属于JS的原始值类型:

  • 你控制台输出时看到的类对象结构,只是字符串本身的内容展示效果,不是真实的可操作对象
  • 对原始值类型(字符串、数字、布尔等)执行自定义属性赋值的操作,在非严格模式下会被JS引擎静默忽略——既不会抛出错误,也不会真的修改原始值的内容
  • 因此你先后执行的a["customfield_11904"] = time、t.Jira.pack.c.customfield_11904 = time操作全部没有实际效果,三次控制台输出的内容完全一致。

修复方法

  • 方案1:将TOML配置中的字符串JSON替换为TOML原生的嵌套对象结构,从根源上避免字符串解析问题:
    [Jira.pack.c]
    project = { key = "DEMO" }
    issuetype = { id = 10002 }
    priority = { id = "3" }
    
  • 方案2:如果必须保留TOML中的JSON字符串写法,需要先手动解析、再修改、最后重新序列化回对象:
    // 解析字符串为JS对象
    a = JSON.parse(t.Jira.pack.c)
    // 给对象追加自定义字段
    a.customfield_11904 = time
    // 将修改后的对象重新赋值给配置(因为原属性是字符串,需要重新序列化才能保留修改)
    t.Jira.pack.c = JSON.stringify(a)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 19:54:03