将JSON对象转换为特定的CSV格式
我想把这个换成将JSON对象转换为特定的CSV格式,json,node.js,excel,csv,npm,Json,Node.js,Excel,Csv,Npm,我想把这个换成 { "Name A":{ "Name B":{ "Name C":"Value C", "Name D":"Value D", "Name E":"Value E" } } } 对此 Name A,,, ,Name B,, ,, Name C,Value C ,, Name D,Value D ,,Name E,Value E 在excel中打开时,它将如下
{
"Name A":{
"Name B":{
"Name C":"Value C",
"Name D":"Value D",
"Name E":"Value E"
}
}
}
对此
Name A,,,
,Name B,,
,, Name C,Value C
,, Name D,Value D
,,Name E,Value E
在excel中打开时,它将如下所示我试图通过运行一个小脚本来实现这一点,但在此之前,我想检查是否有任何节点包或工具可以轻松实现这一点。有什么线索吗?可能是您可以尝试使用此npm模块
csvjson
链接在这里:-我通过编写自己的脚本解决了这个问题。根据数据的格式,我不得不做一些调整以满足我的需要。这不是最优雅的解决方案。我很快就找到了解决办法。如果有人想尝试编写自己的脚本来将JSON转换为CSV,那么这仍然是一个很好的参考
var fs = require('fs');
var file = 'templateEn.json';
var content = fs.readFileSync(file, { encoding: 'binary' });
var obj = JSON.parse(content);
var jsonString = ""
var lineEnd = "\r\n";
var firstLevelKeys = Object.keys(obj);
jsonString += firstLevelKeys[0] + ",,,,," + lineEnd;
var secondLevelKeys = Object.keys(obj["en"]);
secondLevelKeys.forEach(key => {
jsonString += ',' + key +',,,,'+ lineEnd
var thirdLevelKeys = Object.keys(obj["en"][key]);
thirdLevelKeys.forEach(key2=>{
if (typeof obj["en"][key][key2] === "string"){
jsonString += ",," + key2 + ',"' + obj["en"][key][key2]+'",,'+ lineEnd;
}
else if (typeof obj["en"][key][key2] === "object"){
var fourthLevelKeys = Object.keys(obj["en"][key][key2]);
jsonString += ',,' + key2 + ',,,' + lineEnd
fourthLevelKeys.forEach(key3 => {
if (typeof obj["en"][key][key2][key3] === "string") {
jsonString += ",,," + key3 + ',"' + obj["en"][key][key2][key3] + '",' + lineEnd;
}
else if (typeof obj["en"][key][key2][key3] === "object") {
var fifthLevelKeys = Object.keys(obj["en"][key][key2][key3]);
jsonString += ',,,' + key3 + ',,' + lineEnd
fifthLevelKeys.forEach(key4 => {
if (typeof obj["en"][key][key2][key3][key4] === "string") {
jsonString += ",,,," + key4 + ',"' + obj["en"][key][key2][key3][key4] + '"' + lineEnd;
}
})
}
})
}
});
});
fs.writeFileSync("generated.csv", jsonString, "utf8");