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

Node.js如何使用fs模块读取JSON布尔变量并修改后写入文件

Node.js 读写JSON文件修改布尔值实现方案

现有代码问题说明

  • Node.js 是服务端运行环境,不存在浏览器端的window对象,window.onload逻辑完全无效
  • 你提供的JSON结构中没有folders顶层字段,代码中ft.folders会返回undefined,后续读取module字段会直接报错
  • 读写场景不建议用require直接导入JSON:require会缓存文件内容,即使原文件被修改,重新导入也只会返回第一次加载的结果

完整实现代码

const fs = require('fs');
const path = require('path');

// 拼接目标JSON的绝对路径,避免相对路径执行出错
const targetJsonPath = path.join(__dirname, '../structure.json');

function modifyModuleField() {
  try {
    // 1. 读取文件内容并转为JS对象
    const rawContent = fs.readFileSync(targetJsonPath, 'utf-8');
    const jsonData = JSON.parse(rawContent);

    // 2. 严格判断module字段是否为布尔值false
    if (jsonData.module === false) {
      // 按需求修改字段值,此处示例改为true
      jsonData.module = true;
    }

    // 3. 转为格式化JSON字符串,第三个参数2代表缩进2空格,保留可读性
    const updatedContent = JSON.stringify(jsonData, null, 2);
    // 4. 写回原文件
    fs.writeFileSync(targetJsonPath, updatedContent, 'utf-8');
  } catch (error) {
    console.error('操作失败:', error.message);
  }
}

// 直接执行函数即可,Node环境无需等待页面加载事件
modifyModuleField();

核心逻辑说明

  • 布尔值判断:如果需要严格区分false和其他假值(如undefined、0、空字符串),使用jsonData.module === false判断;如果只要是假值就触发修改,直接写if (!jsonData.module)即可
  • 写入格式化:JSON.stringify的第三个参数用于控制缩进,传入数字代表缩进空格数,也可以传入\t用制表符缩进,避免写入后JSON变成无格式的单行内容
  • 异常处理:try...catch可以捕获文件读写、JSON解析/序列化的所有异常,避免程序直接崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:39:03