将带分隔符的测试文件转换为 JSON 对象 Node.JS
Convert Delimited Test File to JSON Object 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"
}
]
请注意。我也想使用result所以我需要在得到result
的值后进行处理
不确定您是否需要对象数组或其 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(/(?<=.)[\r\n]+(?=.)/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);
}
});
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"
}
]
请注意。我也想使用result所以我需要在得到result
的值后进行处理不确定您是否需要对象数组或其 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(/(?<=.)[\r\n]+(?=.)/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);
}
});