简体   繁体   English

Javascript:如何将数组中的JSON数组转换为CSV文件?

[英]Javascript: How to convert an JSON arrays in array into an CSV file?

I'm struggeling with my JSON file here... This is what I get from my processing .php-file as a response: 我在这里处理JSON文件...这是我从处理.php文件中得到的结果:

{"1":{"Nachname":"Stromberg","Vorname":"Bernd", 
"Benutzername":"strombergbernd12","Password":"Xrz5Bv6A"},
"2":{"Nachname":"Heisterkamp","Vorname":"Ernie", 
"Benutzername":"heisterkampernie12","Password":"aOq24EpF"}}

Now, I want to build from this JSON array a csv file. 现在,我想从此JSON数组构建一个csv文件。 In the first row the csv file should mention the headers Nachname, Vorname, Benutzername and Password and then list in the following rows the rest of the data. csv文件的第一行应提及标题Nachname,Vorname,Benutzername和Password,然后在接下来的行中列出其余数据。

I cant handle that, can you help me? 我无法解决,您能帮我吗?

once you have your json as text you parse it: 一旦拥有json文本,就可以解析它:

var json = JSON.parse(jsonAsText);

transform it to an array: 将其转换为数组:

json = Object.values(json);

init your result: 初始化您的结果:

var csv = "";

keep header keys somewhere: 将标头键放在某处:

var keys = (json[0] && Object.keys(json[0])) || [];

write header row 写标题行

csv += keys.join(',') + '\n';

iterate and put everything in csv 迭代并将所有内容放入csv

for (var line of json) {
  csv += keys.map(key => line[key]).join(',') + '\n';
}

Your csv content should be ready 您的csv内容应已准备就绪

 var json = { "1": { "Nachname": "Stromberg", "Vorname": "Bernd", "Benutzername": "strombergbernd12", "Password": "Xrz5Bv6A" }, "2": { "Nachname": "Heisterkamp", "Vorname": "Ernie", "Benutzername": "heisterkampernie12", "Password": "aOq24EpF" } } function toCSV(json) { json = Object.values(json); var csv = ""; var keys = (json[0] && Object.keys(json[0])) || []; csv += keys.join(',') + '\\n'; for (var line of json) { csv += keys.map(key => line[key]).join(',') + '\\n'; } return csv; } console.log(toCSV(json)); 


Note: If you can, switch your json to Array syntax: 注意:如果可以,请将json切换为Array语法:

[
  {
    "Nachname":"Stromberg",
    "Vorname":"Bernd",
    "Benutzername":"strombergbernd12",
    "Password":"Xrz5Bv6A"
  },
  {
    "Nachname":"Heisterkamp",
    "Vorname":"Ernie", 
    "Benutzername":"heisterkampernie12",
    "Password":"aOq24EpF"
  }
]

and then remove this line: 然后删除此行:

json = Object.values(json);

You could use: Object.keys() and Object.values() . 您可以使用: Object.keys()Object.values()

Something like this: 像这样:

 (function() { var data = { "1": { "Nachname": "Stromberg", "Vorname": "Bernd", "Benutzername": "strombergbernd12", "Password": "Xrz5Bv6A" }, "2": { "Nachname": "Heisterkamp", "Vorname": "Ernie", "Benutzername": "heisterkampernie12", "Password": "aOq24EpF" } }; var csv = Object.keys(data[Object.keys(data)[0]]).join(","); // Header columns. csv += "\\n"; for (var item in data) { csv += Object.values(data[item]).join(","); csv += "\\n"; } console.log(csv); }()); 
 .as-console-wrapper { position: relative; top: 0; } 

The result will be: 结果将是:

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM