如何在 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 中读取文件内容并将数据转换为 JSON?
Node.js - 如何从文件中读取数据并将输出集成到变量中