[Node.JS] 读取带注释及格式为UTF-8 BOM的json文件

一、读取带注释的json文件
        直接读取带注释的json文件并反序列化时会报错,因为JSON.parse()不支持带注释的json格式,这里推荐使用第三方库‘json5’,类似的库还有很多,这里不做介绍;

npm install json5
const JSON5 = require('json5');
const fs = require('fs');

let config = fs.readFileSync('c://test.json');
config = JSON5.parse(config.toString('utf-8'));
return config;

二、读取格式为UTF-8 BOM格式的json文件 
        有的操作系统下json文件格式为UTF-8 BOM,会在文件头添加0xEF、0xBB、0xBF三个字节,这同样会导致在反序列化时报错;需要在读取后先删除这三个字节在做反序列化;

const fs = require('fs');

let config = fs.readFileSync('c://test.json');
if (config[0] === 0xEF && config[1] === 0xBB && config[2] === 0xBF) {
  config = config.slice(3);
}
config = JSON.parse(config.toString('utf-8'));

return config;

总结 

        我们可以结合这两个例子,把读取JOSN文件做一个通用的方法,结合如下;

/**
 * 读取指定地址的json文件,并返回反序列化后的js对象
 * @param filePath json文件路径
 * @returns {} 反序列化后的对象
 */
module.exports.readJson = (filePath) => {
  const JSON5 = require('json5');
  const fs = require('fs');

  let config = fs.readFileSync(filePath);
  if (config[0] === 0xEF && config[1] === 0xBB && config[2] === 0xBF) {
    config = config.slice(3);
  }
  config = JSON5.parse(config.toString('utf-8'));

  return config;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值