将分隔测试文件转换为JSON对象Node.JS


fs.readFile('data.txt', 'utf8', (err, result)=>{
if(err){
console.log(err);
}
else{
console.log(result);
}
})

上面的代码运行良好。但我想将结果解析为JSON对象。

测试文件格式

test1:value1:"Pass":John:"Log1"
test2:value2:"Fail":Peter:"Log2"
test3:value3:"Pass":Peter:"Log3"

结果变量格式

test1:value1:"Pass":John:"Log1"
test2:value2:"Fail":Peter:"Log2"
test3:value3:"Pass":Peter:"Log3"

现在我想将结果转换为JSON对象。

[
{
"test": "test1",
"value": "value1",
"status": "Pass",
"name": "John",
"log": "Log1"
},
{
"test": "test2",
"value": "value2",
"status": "Fail",
"name": "Peter",
"log": "Log2"
},
{
"test": "test3",
"value": "value3",
"status": "Pass",
"name": "Peter",
"log": "Log3"
}
]

请注意。我还想使用结果,所以我需要在获得结果的值后进行处理

不确定是否需要对象数组或其JSON字符串表示,因此这些都是结果:

const fs = require('fs');
fs.readFile('data.txt', 'utf8', (err, result) => {
if (err) {
console.log(err);
} else {
console.log(result);
const array = result.split(/(?<=.)[rn]+(?=.)/u).map((line) => {
const values = line.trim().split(/s*:s*/u)
.map(value => value.replace(/^"|"$/gu, ''));
const keys = ['test', 'value', 'status', 'name', 'log'];
return Object.fromEntries(keys.map((key, index) => [key, values[index]]));
});
console.log(array);
const json = JSON.stringify(array, null, '  ');
console.log(json);
}
});

最新更新