0

我正在尝试使用标题导出 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 个不同的标头与它们各自的数据一起使用呢?请分享你的想法。提前致谢。

4

1 回答 1

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,我得到了预期的输出:-)

于 2017-04-25T09:23:24.820 回答