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
相关产品推荐
相关产品推荐

