如何按指定规则将CSV格式数据转换为目标结构的JSON数据
CSV转指定结构JSON可行方案(无需Python)
以下是3种不同场景的落地方法,可根据你的技术基础选择:
方案1:Excel/Google Sheets公式批量处理(适合非技术人员)
先将CSV内容导入表格,确认你的CSV至少包含title、是否共享给组织、共享用户ID列表、筛选字段、比较符、筛选值几列:
- 比较符转换:用IF函数做映射,假设比较符存储在E列,公式为:
=IF(E1="equals","==",IF(E1="not equal","!=",IF(E1="contains","=@",IF(E1="does not contain","!=@","")))) - 共享用户列表转换:如果用户ID是逗号分隔的字符串,转成JSON数组格式,假设用户ID存储在C列,公式为:
=IF(C1="","[]","["&TEXTJOIN(",",TRUE,ARRAYFORMULA(""""&SPLIT(C1,",")&""""))&"]") - 布尔值转换:如果"是否共享给组织"列是"是/否"值,转成标准布尔值,假设该字段存储在B列,公式为:
=IF(B1="是",true,false) - 最后拼接单条JSON结构,示例公式:
="{""title"":"""&A1&""",""sharedWithOrganization"":"&D1&",""sharedWithUsers"":"&F1&",""filters"":[{""field"":"""&G1&""",""comparator"":"""&H1&""",""value"":"""&I1&"""}]}"
所有行处理完成后,把生成的JSON字符串用逗号拼接,外层加[]即可得到合法JSON数组。
方案2:浏览器JS控制台批量处理(适合有少量代码基础的用户)
按F12打开任意浏览器的开发者控制台,粘贴以下代码,替换csvContent变量为你自己的CSV内容,执行即可直接输出格式化的结果:
// 比较符映射规则 const comparatorMap = { 'equals': '==', 'not equal': '!=', 'contains': '=@', 'does not contain': '!=@' } // 替换为你实际的CSV内容 const csvContent = `title,sharedWithOrganization,sharedWithUsers,field,comparator,value view3,false,81241,81242,81245,81265,Account ID,equals,prod view3,true,,Environment_AG,contains,Development` const lines = csvContent.split('\n').filter(line => line.trim()) const headers = lines[0].split(',') const result = lines.slice(1).map(line => { const values = line.split(',') const row = {} headers.forEach((h, i) => row[h] = values[i]?.trim() || '') return { title: row.title, sharedWithOrganization: row.sharedWithOrganization.toLowerCase() === 'true', sharedWithUsers: row.sharedWithUsers ? row.sharedWithUsers.split(',').filter(id => id.trim()).map(id => id.trim()) : [], filters: [{ field: row.field, comparator: comparatorMap[row.comparator] || row.comparator, value: row.value }] } }) console.log(JSON.stringify(result, null, 2))
注意:如果你的CSV中共享用户ID用的是逗号以外的分隔符,把代码里split(',')的逗号替换为实际分隔符即可
方案3:手动拼接(适合数据量小于10条的场景)
直接对照目标格式手动填充:
- 先把比较符按照规则替换为对应符号
- 共享用户列表为空时填
[],有值时每个ID用双引号包裹,逗号分隔放入数组 sharedWithOrganization字段直接填true/false,不需要加引号
内容的提问来源于stack exchange,提问作者kakaji
相关产品推荐
相关产品推荐

