zoukankan      html  css  js  c++  java
  • node读写json文件(进阶)

    该方法可用于通过调接口的方式修改配置文件。步骤如下:

    1. 创建一个json格式的文件,如:test1.json,内容就是一个json,如:{"name":"li"}
    2. 通过fs.readFile()读取到test1.json后,将内容转为JSON格式
    3. 修改完成后再转回字符串格式
    4. 保存修改(就是用修改后的完整内容覆盖修改前的内容,包括没改的部分)

    代码

    fs.readFile('test1.json','utf8',function (err, data) {
            if(err) console.log(err);
            var test1=JSON.parse(data);
            test1.name="li";
            var t = JSON.stringify(test1);
            fs.writeFileSync('test1.json',t)
    });

    正常情况下从JSON文件读取到字符后再通过JSON.parse没什么问题,只要格式不出错。

    有时在确保JSON格式正确时仍然会出现unexpected token异常

    经过调查发现里面有不会显示的unicode字符

    于是确定是UTF-8的问题,utf-8分有dom版和无dom版,一般编辑器不刻意设置会默认保存为带dom的utf8

    解决办法是先将读到的文件转成二进制,然后检索dom符号删除

    代码实现部分

    function readText(pathname) {
        var bin = fs.readFileSync(pathname);
     
        if (bin[0] === 0xEF && bin[1] === 0xBB && bin[2] === 0xBF) {
            bin = bin.slice(3);
        }
     
        return bin.toString('utf-8');
    }
    查资料不过是偏门,撸源码才是脱离苦海的正道。
  • 相关阅读:
    fork操作
    PHP操作Memcached
    对nginx进行平滑升级
    Codeforces Round #457 (Div. 2) B
    codeforces Educational Codeforces Round 39 (Rated for Div. 2) D
    矩阵相乘
    求组合数板子
    斯特林(Stirling)公式 求大数阶乘的位数
    codeforces Gym 101572 I 有向图最小环路径
    Floyd算法——保存路径——输出路径 HDU1385
  • 原文地址:https://www.cnblogs.com/jarvisjin/p/6290474.html
Copyright © 2011-2022 走看看