使用文件流读取JSON文件

时间:2017-09-26 10:22:55

标签: javascript json node.js

使用NodeJS fs模块,使用文件流读取JSON文件的最佳方法是什么。虽然许多解决方案适用于具有换行符的文件,但我需要使用的JSON文件由NodeJS进程写入,因此都在一行上。

需要使用JSON.parse()将有问题的文件读取并解析为可用的Javascipt对象,因为它是一个对象数组,我认为一次只能读取一个对象并进行解析检查值。但是我不知道如何做到这一点,所以任何帮助将不胜感激。

此外,如果我在读取过程中处于此数组的中间,并且需要更新当前正在读取的对象,而不会干扰其在数组中的位置,那么无需阅读整个文件进入内存?

2 个答案:

答案 0 :(得分:1)

1)产品推荐超出SO的范围

2)“需要使用JSON.parse()将有问题的文件读取并解析为可用的Javascipt对象” - 因为JSON.parse()不能按照您的描述进行操作,所以您所做的事情是不可能的这种约束。

JSON.parse()是一个DOM解析器 - 它将输入视为完整的数据报。 Javascript中实现了基于事件的JSON解析器(例如clarinet),通常标记为“SAX”解析器(实际上是指基于XML事件的解析器)。

  

此外,如果我在读取过程中处于此数组的中间,并且需要更新当前正在读取的对象,而不会干扰其在数组中的位置,那么无需阅读整个文件进入内存?

不是没有在JSON的字符串表示上携带插入 - 这将是愚蠢的。

答案 1 :(得分:-1)

同步

var fs = require('fs');
var obj = JSON.parse(fs.readFileSync('jsonfile', 'utf8'));

<强>异步

var fs = require('fs');
var obj;
fs.readFile('jsonfile', 'utf8', function (err, data) {
  if (err) throw err;
  obj = JSON.parse(data);
});

根据您的要求,您可以使用任何一种方式阅读json