作为一名非程序员,经过在互联网上的一些搜索,我还没有找到以下挑战的解决方案。
初始状态:我有一个 Excel 文件,其结构与所附图像“原始数据”相同,但只有 5000 多行。
目标状态:我想要一个具有如下结构的 .json
{
"Berlin": {
"1-Personen-Haushalt": {
"1 Zimmer": [
"20 qm",
"30 qm",
"40 qm",
"50 qm",
"60 qm",
"70 qm"
],
"2 Zimmer": [
"20 qm",
"30 qm",
"40 qm",
"50 qm",
"60 qm",
"70 qm"
]
},
等等
它应该作为组合框的基础。第一个的选择应该定义第二个的选择选项。第二个的选择应该定义第三个的选择选项。等等
它并不像我的示例中那么简单,因此并不总是“20 qm”或“2 Zimmer”。我的意思是真实的图案。
我已经对数据进行了一些格式化,希望这样会更容易。请参阅“格式化数据”
我已经尝试在 Visual Studio Code 中将格式化数据插入到 .json 中,但没有得到所需的结果。
也许您知道如何解决这个问题:)
我的建议是你首先将 xlsx 文件转换为 csv,然后用 papaparse 解析它,然后使用某种函数来获得你想要的。
Papaparse 部分:
let data;
const csv = fs.readFileSync('example.csv', 'utf8');
Papa.parse(csv, {
complete: (results) => {
results.data.pop();
data = results.data;
}
});
格式化程序来获取您想要的json文件:
function formatter(data) {
let result = {};
data.forEach((item) => {
let [city, person, room, size] = item;
if (!result[city]) {
result[city] = {};
}
if (!result[city][person]) {
result[city][person] = {};
}
if (!result[city][person][room]) {
result[city][person][room] = [];
}
result[city][person][room].push(size);
});
return result;
}
您可以将结果保存为 json:
let result = formatter(data);
fs.writeFileSync('result.json', JSON.stringify(result, null, 2));