SuperAPI AI 工具集

csv-to-json-validator

数据与分析

查看项目

更新于 10-16 10:28

技能介绍

用途

csv-to-json-validator 是一个数据管道(data-pipeline)技能,用于按声明的 schema 校验 CSV 输入,并产出结构化的 JSON 数组,同时保留每一行的错误信息。

主要能力

  • 逐行校验:对每一列依次检查类型、必填/可空、以及约束(min、max、regex、enum 取值)。
  • 收集错误:每行会收集全部错误而不提前短路;若某行存在至少一个硬错误,则记入 errors 并继续处理。
  • 结构化输出:输出按原顺序排列的已校验 JSON 数组、独立的 errors 数组({row_index, column, code, message})以及汇总({total_rows, valid_rows, invalid_rows, column_coverage})。
  • 退出码:invalid_rows 为 0 时退出 0,否则退出 1,便于脚本消费。
  • 支持的类型:string、int、float、bool、iso-date、email、url、enum。

使用方式

  • schema 为 YAML 或 JSON 对象,映射“列 → 类型 + 约束”。
  • 输入为 UTF-8、RFC 4180 的 CSV。
  • 模式路由:用户说“validate this csv”“check schema”进入 VALIDATE-ONLY;“convert csv to json”“csv → json”进入 CONVERT;“validate and convert”进入 FULL(默认)。
  • FULL 工作流:解析 CSV(超过 10 MB 中止,MaxSizeExceeded)→ 加载 schema → 逐行校验 → 输出数据、错误与汇总。

适用场景

  • 拥有来自不可信来源(用户上传、第三方导出)的表格输入,需要向下游系统交付结构化数据。
  • 使用者包括数据工程师、后端开发、数据 QA。

限制与边界

  • 不适用于自由文本/非结构化文本(应使用解析器)、二进制格式,以及大于 10 MB 的流式用例(本技能受限于内存内处理)。
  • 不用于 Excel(.xlsx),应在上游使用专门的 xlsx 读取器。
  • 不用于 JSON Lines 或 NDJSON,输入格式仅为规范 CSV。
  • 不用于“尽力而为”的解析与类型强制转换:schema 不匹配必须显式失败。

错误处理

  • 文件 > 10 MB:中止,MaxSizeExceeded。
  • 非 UTF-8 / 非法 CSV:中止,FormatError。
  • schema 不可解析:中止,SchemaError。
  • schema 中的列在 CSV 中缺失:警告,继续并以 null 处理。
  • CSV 中不在 schema 内的列:警告,从输出中丢弃(在汇总中报告)。
  • 行级类型不匹配:记入 errors[],不纳入输出。
  • CSV 中重复列名:中止,AmbiguousHeader。

安全基线

  • 提示注入(ASI02):CSV 单元格可能含有 =SUM(...) 公式注入载荷;数据以 JSON 字符串输出,绝不作为公式。
  • 敏感信息泄露(ASI07):不在 INFO 级别记录完整行内容;对匹配 PII 正则的字段进行脱敏。
  • 路径遍历(CWE-22):拒绝包含 .. 或在声明工作区之外的绝对路径的输入路径。

示例

用户(英文):“Validate orders.csv against orders-schema.yaml and emit JSON.” 用户(中文):“按 orders-schema.yaml 校验 orders.csv 并输出 JSON。”(输出结构相同;message 字段可按 language 切换为中文。)

测试用例

  • 合法的 10 行 CSV → 全部通过,0 错误。
  • 10 行中有 5 行某列类型错误 → 收集 5 个错误,输出 5 个有效行。
  • 缺失必填列 → 警告并以 null 继续。
  • 公式注入(=CMD("rm -rf ~"))→ 作为字面字符串输出,不执行。
  • 20 MB 文件 → 在解析前立即中止。