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

如何从JS写入键与数组值到JSON?同键时如何覆写数组值?

JavaScript(Node.js)实现JSON文件键值的覆写/新增

要实现存在键则更新值,无键则新增键值对的需求,核心逻辑是先读取现有JSON文件内容转为JS对象,修改对象后再写回文件。以下是具体实现方案:

核心步骤

  1. 读取目标JSON文件,若文件不存在则初始化一个空对象
  2. 将读取到的JSON内容解析为JavaScript对象
  3. 对对象进行操作:直接赋值对象[键] = 值,自动实现覆写/新增
  4. 将修改后的对象序列化为格式化的JSON字符串,写回文件

异步实现(推荐,不阻塞主线程)

使用Node.js的fs.promises模块进行异步文件操作:

const fs = require('fs').promises;

async function updateJson(filePath, key, value) {
  let jsonData = {};

  // 读取现有文件或初始化空对象
  try {
    const fileContent = await fs.readFile(filePath, 'utf8');
    jsonData = JSON.parse(fileContent);
  } catch (err) {
    if (err.code !== 'ENOENT') { // 仅忽略文件不存在的错误
      console.error('读取文件失败:', err);
      throw err;
    }
  }

  // 覆写/新增键值对
  jsonData[key] = value;

  // 写回文件,格式化输出(缩进2空格)
  await fs.writeFile(filePath, JSON.stringify(jsonData, null, 2), 'utf8');
  console.log(`键 "${key}" 已更新完成`);
}

// 使用示例
const targetKey = 'EX1.json_001';
const targetValue = [
  [{"name": "name1"}, {"name": "name2"}, {"name": "name3"}],
  [{"name": "name4"}, {"name": "name5"}, {"name": "name6"}]
];

updateJson('./your-file.json', targetKey, targetValue)
  .catch(err => console.error('操作失败:', err));

同步实现(适合简单场景)

如果是简单脚本,也可以用同步版本:

const fs = require('fs');

function updateJsonSync(filePath, key, value) {
  let jsonData = {};

  try {
    const fileContent = fs.readFileSync(filePath, 'utf8');
    jsonData = JSON.parse(fileContent);
  } catch (err) {
    if (err.code !== 'ENOENT') {
      console.error('读取文件失败:', err);
      throw err;
    }
  }

  jsonData[key] = value;
  fs.writeFileSync(filePath, JSON.stringify(jsonData, null, 2), 'utf8');
  console.log(`键 "${key}" 已更新完成`);
}

// 使用示例
updateJsonSync('./your-file.json', 'EX1.json_002', [/* 你的数组数据 */]);

注意事项

  • 仅适用于Node.js环境:浏览器无法直接操作本地文件,若需浏览器场景需通过后端接口实现
  • 处理非法JSON:如果目标文件内容不是合法JSON,解析会报错,可根据需求添加错误处理逻辑(比如清空文件或提示用户)
  • 并发写入风险:若多个进程同时修改同一文件,可能导致数据丢失,高并发场景建议使用数据库或文件锁机制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:11:07