You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS的async-csv库解析含JSON的CSV时丢失双引号如何解决

解决async-csv解析内嵌JSON的CSV时丢失双引号问题

问题原因

当前配置下async-csv的字段包裹符规则与你的CSV文件不匹配,默认会将JSON内部的双引号识别为CSV字段的包裹标记进行移除,导致JSON结构损坏。

解决方案

调整csv.parse的配置参数,明确指定CSV的字段包裹规则:

  • 你的CSV示例中使用单引号'包裹包含JSON的字段,需要手动指定quote参数为单引号,让库正确识别字段边界
  • 配置escape参数为双引号,避免JSON内部的双引号被误处理
  • 关闭自动修剪空白的配置,防止JSON内容被意外修改

示例代码

const csv = require('async-csv');
const fs = require('fs/promises');

async function readCsvWithJson() {
  // 读取CSV文件内容
  const fileContent = await fs.readFile('./你的文件路径.csv', 'utf-8');
  // 传入自定义配置解析
  const parseResult = await csv.parse(fileContent, {
    quote: "'", // 指定CSV字段的包裹符为单引号
    escape: '"', // 指定转义符为双引号,匹配JSON语法
    trim: false // 禁止自动修剪字段两端空白
  });
  // 此时解析得到的JSON字段会保留完整双引号,可直接解析
  const jsonField = parseResult[0][1];
  console.log(jsonField); // 输出 {"test":"help me"}
  const parsedJson = JSON.parse(jsonField); // 可正常解析
}

补充说明:如果你的CSV实际是用双引号作为字段包裹符,需要把quote参数改为默认的",同时按照CSV规范将JSON内部的双引号转义为两个连续双引号(即把"替换为""),也能正常保留JSON结构。


内容的提问来源于stack exchange,提问作者user3508995

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:18:00