所有嵌套对象的javascript csv标头



我正在使用"将json反应为csv";为了将json数据保存到csv文件中,问题出在嵌套对象上,因为csv导出标头已损坏,显示了由于这些嵌套对象而产生的备用数据。例如,这是我的json数据:

[
{
"id": "997",
"source": "wired",
"title": "testing title",
"www": {
"wwwId": 918,
"wwwName": "Deprecated wire)"
},
"css": 7.3,
"wrongAdded": "true",
"paths": [
{
"name": "client",
"version": "1.9.2",
"description": "testing",
"resolvePath": {
"name": "ares",
"isFsfLibre": true,
"isold": false
},
"externalPath": [
{
"type": "a",
"url": "was"
},
{
"type": "q",
"url": "wss"
},
{
"type": "x",
"url": "was"
}
],
"project": {
"name": "Testing",
"version": "001",
"active": true
},
"usedBy": 0,
"isInternal": false
}
],
"Count": 0
}, ... and so on
]

通过这种方式,我得到了我的api数据:

const [stateData, setData] = useState({infoData:[]});
.......
function callingApis() {

const promises = urls.map(url => axios.get(url, { headers }));

Promise.all(promises).then(responses => {
let data = [];

responses.forEach(response => {
data = data.concat(response.data);
});
setData(data);
});
};

也许有人对如何做到这一点有更好的想法?

或者可以将json对象中的一些片段存储在变量中,例如:

const filteredData = [
{"id": stateData.id},
{"source": stateData.source},
{"pathName": stateData.paths.name}
{"pathDescription": stateData.paths.description},
and so on ...
]

但我想在过滤之前需要对数据进行.map()

并在最后将其导出到CCD_ 2。

<CsvDownload data={filteredData} />

我不确定这是你想要的答案,但似乎你只需要使用map来创建一个具有你想要的形状的对象数组。

function callingApis() {
const promises = urls.map(url => axios.get(url, { headers }));
Promise.all(promises).then(responses => 
responses.map(({data}) => {
return [
{"id": data.id},
{"source": data.source},
{"pathName": data.paths.name}
{"pathDescription": data.paths.description},
]
).then(filteredData => setData(filteredData))


};

最新更新