首页 > 解决方案 > 从 JSON 对象生成 CSV 文件

问题描述

都在标题中,我想从这个 Ajax 请求中获取的 JSON 对象生成一个 CSV 文件,

我得到的 JSON 代表表单中的所有记录:

在此处输入图像描述

我已经有了一个适用于一个字段值的东西,一个单一的记录(这里的 0):

    <!DOCTYPE html>
    <meta charset="utf-8"/>
    <html>
        <head>
            <title>This is Website Title</title>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js" type="text/javascript"></script>
            <script src="../FileSaver.js"></script>
            <script>
                var formId = 566091
                // Définition des paramètres de la requête HTTP
                var settings = {
                    "async": true,
                    "crossDomain": true,
                    "url": "https://www.kizeoforms.com/rest/v3/forms/"+formId+"/data/readnew",
                    "method": "GET",
                    "headers": {
                            "content-type": "application/json",
                            "Authorization": "******",
                    }
                }

                // Envoi de la requête et affichage en console de la réponse
                $.ajax(settings).done(function (response) {
                    console.log(response);
                    var ssa3 = [];
                    for (var i = 0 ; i <= response.data.length; i++) {
                        ssa3.push(response.data[i].fields.ssa_3_a_22h00.value);
                    }
                    //var ssa3 = response.data[0].fields.ssa_3_a_22h00.value;
                    var blob = new Blob([ssa3], {type: "application/csv;charset=utf-8"});
                    saveAs(blob, "ssa3.csv");
                });
            </script>
        </head>
    </html>

我现在想为所有记录设置此字段值,我试图将其推入表中,但控制台告诉我“我未定义”

                $.ajax(settings).done(function (response) {
                    console.log(response);
                    var ssa3 = [];
                    for (var i = 0 ; i <= response.data.length; i++) {
                        ssa3.push(response.data[i].fields.ssa_3_a_22h00.value);
                    }
                    var blob = new Blob([ssa3], {type: "application/csv;charset=utf-8"});
                    saveAs(blob, "ssa3.csv");
                });

标签: javascriptjqueryhtmlajaxcsv

解决方案


终于找到了,我用了一个forEach来浏览数据:

$.ajax(settings).done(function (response) {

                console.log(response);
                var ronde1n = [];

                //on définit data qu'on va devoir parcourir avec un forEach
                const data = response.data;

                //on envoie les headers du fichiers csv
                ronde1n.push("Numéro d'enregistrement,ID,Date et heure,conso SSA3");

                //on parcours l'ensemble des enregistrements du formulaire Ronde 1 nuit
                  data.forEach(function (i) {
                     //on envoie les valeurs des champs qui nous intéressent pour chaque enregistrement
                     ronde1n.push("\r\n" + i.record_number + "," + i.id + "," + i.fields.date_et_heure.value + "," + i.fields.ssa_3_a_22h00.value);
                  });

                //création du fichier CSV
                var blob = new Blob([ronde1n], {type: "application/csv;charset=utf-8"});
                  saveAs(blob, "ronde1_nuit.csv");

            });

推荐阅读