如何读取文本文件并将其作为Node JS中的JSON对象返回?

时间:2016-09-12 13:02:25

标签: json node.js fs

我有一个文本文件。我需要读取函数内的文件并将其作为JSON对象返回。以下是在位置0和#34的JSON中抛出错误"意外的令牌V.

Server.js

fs.readfile('result.txt', 'utf8', function(err,data) {
    if(err) throw err;
    obj = JSON.parse(data);
    console.log(obj);
});

result.txt如下所示

VO1:10 5 2

VO2:5 3 2

我想我不能直接使用JSON.parse。我该怎么办?

4 个答案:

答案 0 :(得分:2)

假设如下:

  

每一行都用换行符(\n

分隔      

每一行都以:分隔,其中前面的部分是键,后面的部分是(空格)分隔的字符串,应该将键值指示为数组

以下内容适用于您的格式:

fs.readfile('result.txt', 'utf8', function(err,data) {
    if(err) throw err;
    let obj = {};
    let splitted = data.toString().split("\n");
    for (let i = 0; i<splitted.length; i++) {
        let splitLine = splitted[i].split(":");
        obj[splitLine[0]] = obj.splittLine[1].split(" ");
    }
    console.log(obj);
});

答案 1 :(得分:0)

您需要自己解析文本文件。您可以使用RegExp或其他方法提取值,从中创建一个对象,然后JSON.stringify

答案 2 :(得分:0)

感谢Baao提供了答案。

作为另一种解决方案,如果你没有任何&#34;:&#34;对于可能的文件列表,您始终可以在密钥中进行编码,如下所示:

var data = fs.readFileSync(pathAndFilename);
var testData = {};
var splitList = data.toString().split('\r\n');
for (var i = 0; i < splitList.length; i++) {
     testData['fileNumber' + i.toString()] = splitList[i];
}

答案 3 :(得分:-1)

你的result.txt无效json。

有效的json看起来像这样。

{
  "VO1": [10, 5, 2],
  "VO2": [5, 3, 2]
}