在VS Code中用JavaScript读取指定路径.txt文件中的对象方法
嘿,这问题我之前也碰到过!你的.txt文件里的内容其实是多个独立JSON对象直接拼接,但标准JSON只认单个对象或者数组结构,所以直接解析肯定会失败。咱们一步步来解决:
解决步骤
1. 先修正文本格式,转成合法JSON数组
你的原始内容是这种非标准结构:
{"food": "chocolate", "eaten": true} {"food": "hamburger", "eaten": false} {"food": "peanuts", "eaten": true}
这种格式不符合JSON规范,我们需要把它转换成[{"food": "...", ...}, {"food": "...", ...}]这样的合法数组格式。可以用正则表达式批量处理:
- 匹配所有对象之间的
} {(包含中间的空格/换行),替换成}, { - 在整个字符串首尾分别加上
[和],把零散对象包裹成数组
2. 用Node.js编写读取+解析+遍历的函数
在VS Code里可以直接运行Node.js脚本,咱们用Node内置的fs模块来处理文件。下面是完整的示例代码:
const fs = require('fs').promises; // 用异步版本更友好,避免阻塞 async function processFoodFile(filePath) { try { // 1. 读取目标txt文件的内容 const fileContent = await fs.readFile(filePath, 'utf8'); // 2. 修正JSON格式:处理对象分隔,包裹成数组 // 正则/\s*/匹配任意空白字符(空格、换行、制表符都能覆盖) const formattedContent = `[${fileContent.replace(/}\s*{/g, '}, {')}]`; // 3. 解析成JavaScript数组 const foodItems = JSON.parse(formattedContent); // 4. 遍历所有对象,执行你的业务逻辑 console.log('开始遍历食物列表:'); foodItems.forEach((item, index) => { console.log(`第${index+1}项:食物=${item.food},是否已食用=${item.eaten ? '是' : '否'}`); // 这里可以加自定义逻辑,比如筛选已吃的食物 if (item.eaten) { console.log(`→ ${item.food}已经被吃掉啦!`); } }); return foodItems; // 返回解析后的数组,方便后续复用 } catch (error) { console.error('处理文件时出错:', error.message); throw error; // 抛出错误方便上层处理 } } // 调用示例:把你的txt文件路径替换进去 processFoodFile('./food_records.txt');
3. 注意事项
- 如果你的.txt文件里存在语法截断(比如缺失
}或引号),JSON.parse会直接报错,这时候需要先手动修正文件里的语法错误。 - 运行脚本时,在VS Code终端输入
node 你的脚本文件名.js即可执行。 - 如果对象之间的分隔符是特殊字符,可根据实际情况调整正则表达式的匹配规则。
这样就能顺利读取并遍历文件里的所有对象啦!
内容的提问来源于stack exchange,提问作者Dog
相关产品推荐
相关产品推荐

