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

Posted

技术标签:

【中文标题】如何在 Node JS 中读取文本文件并将其作为 JSON 对象返回?【英文标题】:How to read a text file and return it as a JSON object in Node JS? 【发布时间】:2017-01-19 22:18:29 【问题描述】:

我有一个文本文件。我需要读取函数内的文件并将其作为 JSON 对象返回。以下是抛出错误“位置 0 处 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

摄氧量:5 3 2

我想我不能直接使用 JSON.parse。我该如何进行?

【问题讨论】:

result.txt的内容是什么? 查看 result.txt 会有所帮助。 你不能,因为.txt 文件被导入为字符串iirc。您必须编写自己的解析器才能将数据转换为 json。 【参考方案1】:

改进@baao 的答案:

const fs = require("fs")

fs.readFile('.czrc', 'utf8', function (err, data) 
    if (err) 
        console.error(err)
        throw "unable to read .czrc file.";
    
   const obj = JSON.parse(data)
);

【讨论】:

【参考方案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]] = splitLine[1].trim();
    
    console.log(obj);
);

【讨论】:

我收到一个错误,将 splitLine 作为未识别的标识符。 所以有些行没有键、值或:。在将值分配给对象 @Bharg 之前尝试添加检查【参考方案3】:

感谢 Baao 提供这个答案。

作为另一种解决方案,如果您没有任何“:”可能是一个文件列表,您总是可以像这样在一个键中编码:

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

【讨论】:

您好,pathAndFilename 的值是多少? 这将是您要读取的文件的完整路径和文件名。又名 C:\Program Files\MyApp\Configuration\systemConfiguration.txt【参考方案4】:

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

【讨论】:

【参考方案5】:

您的 result.txt 不是有效的 json。

有效的 json 看起来像这样。


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

【讨论】:

以上是关于如何在 Node JS 中读取文本文件并将其作为 JSON 对象返回?的主要内容,如果未能解决你的问题,请参考以下文章

如何将文件逐行读入node.js中的数组[重复]

如何在 Node.js 中读取文件内容并将数据转换为 JSON?

如何读取大文件并将其上传到 s3?

Node.js - 如何从文件中读取数据并将输出集成到变量中

如何在 Swift(CreateML) 中读取文本文件的内容并将其解析为字典

如何读取文本文件并将其显示在 win 32 unicode 字符集中的编辑控件上?