最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何保存和读取JSON数据

运维笔记admin10浏览0评论

如何保存和读取JSON数据

如何保存和读取JSON数据

我想一个亿数据保存在我的应用程序的NodeJS一个JSON文件。其主要思想是,以1000×1000的像素的网格保存为与该x,y位置和颜色ID阵列,使得每个像素具有坐标和颜色。我实际的代码来生成一个例子:

所以我有一个函数生成数据,并使用fs.writeFile()我可以将它保存。

//resetPos('test.json');
function resetPos(path) {
    let data = [];
    for (let y = 1; y <= 1000; y++){
        data.push([]);
    }
    data.forEach(function(e, i){
        for (let x = 1; x <= 1000; x++) {
            e.push([
                "x": x,
                "y": i,
                "color": "#cccccc"
            ]);
        }
    });
    fs.writeFile(path, JSON.stringify(data), function(err){
        if(err) throw err;
    });
    console.log(data);
}
let global_data = fs.readFileSync("test.json");
console.log(global_data[0]);

当我读了文件,显示“91”。我已经使用.toJSON()和的ToString()尝试,但没去,因为我想要的。我看做得到的x,y坐标数据[Y] [X]

回答如下:

基本上,有两种方法来读取一个Node.js的文件.json

第一种选择是使用require功能,您通常使用导入.js文件,但你可以使用它的.json文件以及:

const packageJson = require('./package.json');

这种方法的好处是,你拿回.json文件作为一个JavaScript对象或数组的内容,已经被解析。这种方法的缺点是,你不能重新加载该文件在当前进程中,如果事情已经改变,因为require任何缓存加载文件的内容,你总是给后面的缓存值。

你的第二个选择是完全相反的:它可以让你重新加载的东西,但它需要你分析你自己的文件。为此,您使用fs模块的readFile功能:

const fs = require('fs');

fs.readFile('./package.json', { encoding: 'utf8' }, (err, data) => {
  const packageJson = JSON.parse(data);

  // ...
});

如果你想使用asyncawait,如果你使用的Node.js的util.promisify功能,你也可以这样写以同步的方式,但保留异步代码:

const fs = require('fs'),
      { promisify } = require('util');

const readFile = promisify(fs.readFile);

(async () => {
  const data = await readFile('./package.json', { encoding: 'utf8' });
  const packageJson = JSON.parse(data);

  // ...
})();

除此之外,里面还有fs.readFileSync功能,以同步的方式工作,但你应该从一个软件的性能的原因望而却步。

为了写一个JSON文件,你唯一的选择是使用writeFile模块,它的工作原理基本相同,其fs对应的readFile功能:

const fs = require('fs');

const packageJson = { /* ... */ };
const data = JSON.parse(packageJson);

fs.writeFile('./package.json', data, { encoding: 'utf8' }, err => {
  // ...
});

同样,你可以使用util.promisify功能如上所述,使事情asyncawait工作,或者你可以使用同步fs.writeFileSync功能(再次,我不推荐)。

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论