如何使用JavaScript解析含嵌套对象数组的JSON文件并转换为Excel
解法思路
你遇到的是典型的一对多JSON结构转二维表场景:外层的name、subject、framework是公共字段,需要和standards数组里的每一项单独组合成一行数据。
实现代码
核心转换逻辑
// 输入原始JSON数据 const rawData = [ { "name": "Kindergarten", "subject": "Math", "framework": "NC: Standard Course of Study", "standards": [ {"id": 1306687,"name": "NC.K.CC.1","short_description": "Standard 1."}, {"id": 1306688,"name": "NC.K.CC.1.a","short_description": "Standard 2."}, {"id": 1306689,"name": "NC.K.CC.1.b","short_description": "Standard 3."} ] } ] // 处理转换逻辑 function flattenJsonToRows(data) { const result = [] // 定义表头,和你需要的输出格式完全对应 const headers = ["name", "subject", "framework", "standards/id", "standards/name", "standards/short_description"] result.push(headers) // 遍历外层每一项 data.forEach(outerItem => { // 提取公共字段值 const commonFields = [outerItem.name, outerItem.subject, outerItem.framework] // 遍历嵌套的standards数组 outerItem.standards.forEach(standardItem => { // 公共字段 + 当前标准项字段 拼成一行 const row = [ ...commonFields, standardItem.id, standardItem.name, standardItem.short_description ] result.push(row) }) }) return result } // 调用得到二维数组,可直接用于导出Excel const tableData = flattenJsonToRows(rawData) console.log(tableData)
导出为Excel可识别的CSV文件
不需要引入第三方依赖,直接用原生JS就能生成Excel可以正常打开的CSV格式文件:
function exportToCsv(tableData, filename = '标准导出.csv') { // 拼接CSV格式内容 const csvContent = tableData.map(row => row.join(',')).join('\n') // 创建下载链接触发下载 const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' }) const url = URL.createObjectURL(blob) const link = document.createElement('a') link.href = url link.setAttribute('download', filename) document.body.appendChild(link) link.click() document.body.removeChild(link) } // 调用导出方法 exportToCsv(tableData)
扩展说明
如果后续遇到嵌套层级更深、或者有多个嵌套数组的场景,只需要调整表头定义和字段提取规则即可,核心逻辑不变:先提取外层公共字段,再遍历嵌套数组,将公共字段和数组子项的字段拼接为独立行。
内容的提问来源于stack exchange,提问作者AJ Mann
相关产品推荐
相关产品推荐

