сейчас у меня есть вложенный объект дерева JSON (this.props.holdinginfo), отправляемый из бэкэнда во внешний интерфейс, и я пытаюсь добавить кнопку EXPORT на веб-странице, чтобы иметь возможность экспортировать объект JSON в csv файл с помощью реакции.
Объект дерева JSON выглядит следующим образом:
[{'holder': 'Passive', 'Position': 500.0, 'pct_shares_out': 0.5,
'Node': [{'holder': 'TD Inc.', 'Position': 300.0, 'pct_shares_out': 0.2,
'Node': [{'holder': 'TD ETF', 'Position': 400, 'pct_shares_out': 0.1},
{'holder': 'TD Fund', 'Position': 430.0, 'pct_shares_out': 0.2}]},
{'holder': 'Active', 'Position': 725.0, 'pct_shares_out': 0.1,
'Node': [{'holder': '18 Asset', 'Position': 390, 'pct_shares_out': 0.5,
'Node': [{'holder': '18 Inc.', 'Position': 190, 'pct_shares_out': 0.2},
{'holder': 'Lysander-18 Equity Fund Series A', 'Position': 19, 'pct_shares_out': 0.05}]}]}];
И я хочу CSV-файл в следующем формате:
holder/position/pct_share_out
'Passive'/500.0/0.5
'TD Inc.'/300.0/0.2
'TD ETF'/400/0.1
'TD Fund'/430/0.2
'Active'/725/0.1
'18 Asset'/390/0.5
'18 Inc.'/190/0.2
'Lysander-18 Equity Fund Series A'/19/0.05
Что я сейчас делаю, так это добавление кнопки в js-файл в компоненте:
<Button variant="contained"
size="small"
onClick={this.handleExport}>
<SaveIcon label="Export" />
Export
</Button>
, который вызывает handleExport для экспорта таблицы в файл csv:
handleExport = () => {
let csv = Papa.unparse(this.props.holdinginfo);
console.log(csv);
}
Но так как this.props.holdinginfo является вложенным древовидным объектом, вывод console.log будет "" [объект объекта], [объект объекта], [объект объекта], [объект объекта], [объект объекта], [объект Объект], [объект Объект] .... "
Вопрос у меня -
1- Как преобразовать вложенное дерево JSON в CSV?
2- Как скачать этот CSV, когда пользователь нажимает кнопку?
Спасибо за помощь !!