生成具有多个JSON的单个CSV文件及其各自的标头

时间:2017-04-25 06:08:14

标签: javascript angularjs ng-csv-import

我正在尝试使用标头导出csv,但条件是我有3个json。所有3 json都在同一个csv文件中下载。现在我想通过在csv文件中包含标题来区分这些json。我有一个JSON,如:

"data": {
    "subData": [
        [
            {
                "ABC": "North America",
                "EFD": 937,
                "EFDPercentage": 66.5483,

            },
            {
                "ABC": "Europe",
                "EFD": 123,
                "EFDPercentage": 8.7358,

            }
        ],
        [
            {
                "PQR": "Media and Entertainment",
                "topPQR": 174,
                "PQRPercentage": 12.358,

            },
            {
                "PQR": "Sep 2016",
                "topPQR": 82,
                "PQRPercentage": 5.8239,

            },
            {
                "PQR": "Conference",
                "topPQR": 50,
                "PQRPercentage": 3.5511,

            }
        ],
        [
            {
                "XYZ": "M&E",
                "topXYZ": 279,
                "XYZPercentage": 19.8153,

            },
            {
                "XYZ": "Technology",
                "topXYZ": 197,
                "XYZPercentage": 13.9915,

            },
            {
                "XYZ": "Online Retail",
                "topXYZ": 163,
                "XYZPercentage": 11.5767,

            }
        ]
    ]
}

我们知道ng-csv属性只接受一个json对象。因此我通过这样做将3个对象连接成一个大对象:

$scope.subDataArr = [];
$scope.subData = response.data.subData;
for(var i=0; i<self.subData.length; i++){
    for(var j=0; j<self.subData[i].length; j++){
        self.subDataArr.push(self.subData[i][j]);
    }
}

以上所有数据都以JSON对象格式合并到subDataArr中。通过访问此对象,我可以将所有数据下载到CSV文件中,但我想通过在csv文件中提供标题来区分这些数据。我知道我们正在使用csv-header在csv文件中给出标题。但在这里他们是3个不同的标题列表。那么如何使用3个不同的标题及其各自的数据呢? 请分享您的想法。提前致谢。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。我创建了具有标题名称的新对象并推入我们下载的主json对象。像这样:

$scope.subDataArr = [];
$scope.subData = response.data.subData;
for(var i=0; i<self.subData.length; i++){
    if(i===0){
        self.Header1 = {
                "ABC": "ABC",
                "EFD": "EFD",
                "EFDPercentage": "EFDPercentage"

            };
        self.subDataArr.push(self.Header1);
    }
    if(i===1){
        self.Header2 = {
                "PQR": "PQR",
                "topPQR": "topPQR",
                "PQRPercentage": "PQRPercentage"

            };
        self.subDataArr.push(self.Header2);
    }
    if(i===2){
        self.Header3 = {
                "XYZ": "XYZ",
                "topXYZ": "topXYZ",
                "XYZPercentage": "XYZPercentage"

            };
        self.subDataArr.push(self.Header3);
    }
    for(var j=0; j<self.subData[i].length; j++){
        self.subDataArr.push(self.subData[i][j]);
    }
}

所以带有标题的所有数据都进入主JSON,我得到预期的输出: - )