转换文件全内容nodejs

我正在build立一个NodeJS的网站,要求上传一个数据文件,然后我必须检查和(如果需要)转换这个文件的内容。

源文件是一个JSON或XMLconfiguration文件,我只需要确保其内容格式良好的应用程序的其余部分。

我想知道什么是检查全局文件内容的最好方法。

我通常用Streams处理文件,但我不确定它是否允许我做我想要的…

源文件具有类似的格式:

{ "parameters": [{ "name": "name", "settings": { "key": "value" } }], "data": [{ "id": "1", "label": "label 1", }, { "id": "2", "label": "label 2" }] } 

我需要做的是parsing文件的内容,并检查文件格式是否好; 否则,将文件转换为格式良好的文件:

 // Read the file content var parameters = [], data = [], p = parameters.length, d = data.length; // Loop on the parameters, and check the format while (p--) { var parameter = parameters[p]; if (name in parameter && typeof parameter.name == "string") { // Add several rules parameters.push(parameter); } } // Do a similar control for "data". // Then save the well-formatted parameters and data into a file 

问题是,上传的文件可能非常大…我可以使用变换stream执行它吗? 因为我需要检查文件的全部内容作为对象! 我怎样才能确定一个stream转换器不会只给一部分数据,例如?

我首先尝试这样的事情:

 var fs = require('fs'); try { var inputFile = require('./config.json'); } catch (e) { console.log(e.message); // Do proper error handling. } // Loop on the parameters, and check the format if (!'parameters' in inputFile) { console.log("Got a problem here!"); } var parameters = []; var p = inputFile['parameters'].length; while(p--) { var parameter = inputFile['parameters'][p]; if ('name' in parameter && typeof parameter.name == 'string') { // Add several rules parameters.push(parameter); } } // Do a similar control for "data". var data = inputFile['data']; // More code needed here... // Then save the well-formatted parameters and data into a file fs.writeFileSync('./data.json', JSON.stringify({parameters: parameters, data: data}, null, 4) , 'utf-8'); 

如果你正在处理那些无法记忆的庞大文件,那么在你面前你将面临更加棘手的任务。 一般来说,你不能保证部分读取会给你足够的JSON来parsing任何东西(例如{"data": ["<FOUR PETABYTE STRING>"]} )。