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

如何向JSON数组指定对象追加键值对且不丢失原有数据?

问题:在JSON数组的指定对象中添加键值对不丢失原有数据

现有JSON结构如下:

[    
    {
     "key1":"value1",
     "key1.1":"value1.1"
    },
    {
     "key2":"value2",
     "key2.1":"value2.1"
    },
    { 
    "key3":"value3",
    "key3.1":"value3.1"
    }
]

我希望在第一个或任意一个对象中添加一组键值对(例如"key1.2": "value1.2"),但使用以下代码时,仅会添加新值并丢失所有原有数据:

.then((data)=>{
  const value1.2 = data
 cy.writeFile('cypress/fixtures/array.json', value1.2, { flag: 'a+' })
})

请问如何实现不丢失原有数据的情况下追加键值对?


解决方法

你用flag: 'a+'的方式是错误的,这个参数会把内容直接追加到文件末尾,破坏JSON格式,自然会丢失原有结构。正确的做法是先读取完整的JSON数据,修改指定对象后再重新写入整个文件:

给第一个对象添加键值对的示例代码

cy.readFile('cypress/fixtures/array.json').then((data) => {
  // 给数组第一个对象(索引0)添加新键值对
  data[0]["key1.2"] = "value1.2";
  // 重新写入文件,覆盖原有内容(这是更新JSON的正确方式)
  cy.writeFile('cypress/fixtures/array.json', data);
});

修改任意位置对象的示例

如果要给第二个对象添加键值对,只需要修改索引:

cy.readFile('cypress/fixtures/array.json').then((data) => {
  // 给数组第二个对象(索引1)添加新键值对
  data[1]["key2.2"] = "value2.2";
  cy.writeFile('cypress/fixtures/array.json', data);
});

关键说明

  • 绝对不要用flag: 'a+'处理JSON文件,它会让文件内容变成多个JSON片段的拼接,完全不符合JSON格式规范。
  • 必须遵循「读取→修改→完整写入」的流程,才能保证原有数据不丢失,同时正确添加新的键值对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:01:17