JavaScript中嵌套Rows的JSON转CSV遇异常求助
JSON转CSV异常解决方法
问题根源
你之前的错误有两个核心原因:
- 解码base64后得到的是字符串格式的JSON,直接遍历这个字符串会把它拆成单个字符,导致CSV每行仅显示单个字符。
- 未正确提取嵌套在
Rows字段下的实际数据,而是直接处理了整个JSON结构。
解决步骤与代码示例
解码并转换为JSON对象
先把base64解码后的字符串转成可操作的JSON对象,再提取Rows数组:// 解码base64并转为JSON对象 const jsonObj = JSON.parse(atob(base_64_string)); // 取出嵌套的Rows数据 const targetData = jsonObj.Rows;编写转换函数
针对Rows数组里的结构化数据,生成标准CSV:function jsonToCsv(data) { if (!data || data.length === 0) return ''; // 获取表头(取第一条数据的所有键) const headers = Object.keys(data[0]); // 处理每行数据,兼容含逗号、引号的内容 const csvRows = data.map(row => { return headers.map(header => { let val = row[header] ?? ''; // 若内容包含逗号或双引号,用双引号包裹并转义内部引号 if (typeof val === 'string' && (val.includes(',') || val.includes('"'))) { val = `"${val.replace(/"/g, '""')}"`; } return val; }).join(','); }); // 拼接表头与行数据 return [headers.join(','), ...csvRows].join('\n'); } // 生成CSV内容 const finalCsv = jsonToCsv(targetData);
验证说明
- 转换后的CSV会以
Rows数组内数据的键作为表头,每行对应一条Rows里的数据。 - 函数兼容包含逗号、双引号的字段内容,避免CSV格式错乱。
内容的提问来源于stack exchange,提问作者Lav Sharma
相关产品推荐
相关产品推荐

