我有一个文本文件。我需要读取函数内的文件并将其作为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。我该怎么办?
答案 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]
}