javascript - 使用 Javascript 将 JSON 转换为 CSV 不会给出 key

标签 javascript json export-to-csv

我已经使用 JavaScript 将 JSON 转换为 CSV,但以一种奇怪的方式,我没有看到 header 被传输到 CSV 文件。我只看到相应的值。

下面是示例

1) JSON ....

[
  {
    "entityid": 2,
    "personid": 45676
  }
]

2) JavaScript 代码 ....

function DownloadJSON2CSV(objArray)
    {
        alert(objArray);
        var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;

        var str = '';

        for (var i = 0; i < array.length; i++) {
            var line = '';

            for (var index in array[i]) {
                //line += array[i][index] + ',';
            if (line != '') line += ','
                line += array[i][index];


            }

            alert(line);
            // Here is an example where you would wrap the values in double quotes
            // for (var index in array[i]) {
            //    line += '"' + array[i][index] + '",';
            // }

            //line.slice(0,line.Length-1); 

            str += line + '\r\n';
        }

        alert(str);
        window.open( "data:text/csv;charset=utf-8," + escape(str)) 

    }

3) CSV 输出....

2,45676

<小时/>

我应该在文档第一行的 CSV 中看到键 - entityidpersonid,但我没有。

最佳答案

此代码将从 json 键中提取 header ,此外它还将双引号包含逗号的字段。

函数convertToCSV(objArray) {
    var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
    var str = '';
    var 键 = [];
    for(var k in objArray[0])keys.push(k);
     for (var i = 0; i < key.length; i++)
     {
         if(i==keys.length-1){str=str+keys[i]+'\r\n'}
             否则 {str=str+keys[i]+','}
         }
     for (var i = 0; i < array.length; i++) {
        var 行 = '';
        for (数组[i]中的var索引) {
            if (line != '') line += ','
               if(array[i][index].toString().includes(",") && typeof array[i][index] === 'string'){array[i][index]="\""+数组[i][索引]+"\""}
                   行+=数组[i][索引];
           }
           str += 行 + '\r\n';
       }
       返回字符串;
   }

用法:(对于 Node.js)

var fs = require('fs');//**运行** npm install fs **如果尚未在cmd中安装**
var arrayOfObjects = [{"id":28,"Title":"瑞典"}, {"id":56,"Title":"美国"},{"id":89,"Title":"英格兰"}];
fs.writeFile("./test.csv",convertToCSV(arrayOfObjects));

关于javascript - 使用 Javascript 将 JSON 转换为 CSV 不会给出 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48213639/

相关文章:

android volley JsonObjectRequest 不返回 body 只是 200

JSON 文档索引失败

javascript - 在 json 数据中保存 CR/LF

javascript - 使用 Javascript 设置 Cookie

javascript - 需要数学日期算法

json - 如何使用 jq 1.5 删除 JSON 输入的哈希数组数组的哈希中的最后一个 "column"?

javascript - 是否有将非结构化数据转换为 csv 的 npm 包?

java - 将 SQLite 数据导出到 CSV 仅输出 CSV 文件中数据库的最后一个条目

javascript - ngIf 仅用于 _this_ 元素,无论如何都显示 child

javascript - AngularJS 10 $digest() 迭代达到列表显示时