How to read a text file and return it as a JSON object in Node JS?

妖精的绣舞 提交于 2021-02-19 05:22:12

问题


I have a text file. I need to read the file inside a function and return it as a JSON object. The following is throwing an error "Unexpected token V in JSON at position 0" .

Server.js

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

result.txt looks like the following

VO1: 10 5 2

VO2: 5 3 2

I think I cannot use JSON.parse directly. How do I proceed?


回答1:


Assuming the following:

Every line is separated by a newline character (\n)

Every line is separated by a : where the part in front of it is the key and the part behind it is a (space) separated string that should indicate the keys values as an array.

Below should work for your format:

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]] = splitLine[1].trim();
    }
    console.log(obj);
});



回答2:


You need to parse the text file by yourself. You can use RegExp or some other means to extract the values, create an object out of that and then JSON.stringify it.




回答3:


Thanks to Baao for providing that answer.

As another flavor of solution, if you don't have any ":" for perhaps a list of files you could always code in a key like so:

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];
}



回答4:


Your result.txt is not valid json.

Valid json would look like this.

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


来源:https://stackoverflow.com/questions/39450961/how-to-read-a-text-file-and-return-it-as-a-json-object-in-node-js

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!