如何将原始文本数据转换为json格式



我从下面提到的API获得响应,我一直试图将下面的数据转换为JSON数组,但无法转换。

found=100
items[0].Detail.Address=192.168.1.4
items[0].Detail.Type=CGI
items[0].Device=
items[0].Level=0
items[0].Time=2022-09-15 11:10:12
items[0].Type=Log In
items[0].User=admin
items[1].Detail.Address=192.168.1.4
items[1].Device=
items[1].Level=0
items[1].Time=2022-09-15 11:09:37
items[1].Type=Log Out
items[1].User=admin

我想把这个数据转换成一个JSON数组。

预期结果:

[
{
"Detail": {
"Address": "192.168.1.4",
"Type": "CGI"
},
"Device": "",
"Level": 0,
"Time": "2022-09-15 11:10:12",
"Type": "Log In",
"User": "admin"
},
{
"Detail": {
"Address": "192.168.1.4"
},
"Device": "",
"Level": 0,
"Time": "2022-09-15 11:09:37",
"Type": "Log Out",
"User": "admin"
}
]

Lucky我一直在写很多代码;x.y.z";最近进入对象

给你

const data = `found=100
items[0].Detail.Address=192.168.1.4
items[0].Detail.Type=CGI
items[0].Device=
items[0].Level=0
items[0].Time=2022-09-15 11:10:12
items[0].Type=Log In
items[0].User=admin
items[1].Detail.Address=192.168.1.4
items[1].Device=
items[1].Level=0
items[1].Time=2022-09-15 11:09:37
items[1].Type=Log Out
items[1].User=admin
items[2].Detail.Address=192.168.1.4
items[2].Detail.Type=CGI
items[2].Device=
items[2].Level=0
items[2].Time=2022-09-15 11:09:37
items[2].Type=Log In
items[2].User=admin`;
const assign = (obj, str, value) => {
str.split('.').reduce((acc, part, index, array) => {
let newValue = isNaN(value) ? value : +value;
if (index < array.length - 1) {
if (isNaN(array[index + 1])) {
newValue = {};
} else {
newValue = [];
}
}
return acc[part] = acc[part] || newValue;
}, obj);
return obj;
}
const result = data.split(/n/).map(v => {
const [key, ...rest] = v.split('=');
const value = rest.join('=');
return [key.replaceAll('[', '.').replaceAll(']', ''), value];
}).reduce((acc, [key, value]) => assign(acc, key, value), {});
console.log(JSON.stringify(result.items, null, 4));

最新更新