我让 Codex 先把导入数据里的问题列出来

我在整理一个 JSON 导入样例时,注意到原来的校验逻辑碰到第一处错误就停了。这样做容易定位当前错误,但如果同一批数据有好几处问题,通常得修改后再运行,才能看到后面的错误。

这次我试了另一种方式:先做一个只读检查器,把它认识的批次内问题一起列出来。它不负责导入,也不修改数据;真正写入之前,还需要另做检查和确认。

我用什么数据测试

这是一组自建的教学数据,不是真实库存:

1
2
3
4
5
6
7
[
{"sku": "A-001", "stock": 0},
{"sku": "A-002", "stock": -1},
{"sku": "A-003", "stock": ""},
{"sku": "A-002", "stock": 3},
{"sku": "A-004", "stock": true}
]

我给样例定的规则很简单:编号是非空且首尾没有空白的字符串;同一批中,有效编号不能重复。库存要是非负整数,0 是有效值,布尔值不算有效库存。

检查器返回了 4 处问题:第 2 条库存为负、第 3 条库存为空、第 4 条编号重复、第 5 条库存类型不对。第 1 条的库存是 0,没有被当作漏填。这里的序号从 1 开始,指 JSON 数组中的记录,不是文件的物理行号。

我让 Codex 关注什么

我没有只说“帮我校验数据”,而是把想保留的行为和不该做的事一起写清楚:

1
2
3
4
5
6
读取自建 JSON 数组,逐条收集约定规则内的问题。
每个问题包含记录序号、字段和错误代码。
库存 0 有效,布尔值不能当作库存整数。
只比较本批次有效编号,不查询外部库存。
检查器不导入、不修改输入、不自动修复。
测试多处错误、无效顶层结构和输入文件未被修改。

这些规则是我为这个例子制定的,不代表其他项目也适用。特别是“同批重复”没有与现有库存对照;用在业务中之前,应先根据实际数据补齐规则。

如何复现

下载检查器、三份教学输入、实际输出及验收测试

需要 Python 3.10 或以上,没有第三方依赖。解压到新目录后,在该目录打开 PowerShell 运行:

1
2
3
4
5
6
7
python -B test_check_batch.py
python -B check_batch.py fixtures/mixed.json
$LASTEXITCODE
python -B check_batch.py fixtures/valid.json
$LASTEXITCODE
python -B check_batch.py fixtures/not-array.json
$LASTEXITCODE

混合错误样例退出 1,有效样例退出 0,顶层不是数组退出 2。1 表示发现了校验问题;2 表示输入无法读取、JSON 无法解析或顶层结构不符合要求。检查通过也只说明符合本例规则,不能据此保证真实业务可以安全写入。

我实际验证了什么

2026 年 11 月 1 日,我在 Windows 本地运行了 8 项验收和上述 3 个教学场景;输入样例与源码的运行前后哈希一致。代码由 Codex 辅助完成;教学检查器不调用 API,也没有检查真实库存、外部编号、任意格式、并发或性能。

我把 JSON 解析与应用规则分开理解:能解析成 JSON,不代表它符合导入要求。参考 Python json 文档和 unittest 文档。

官方 Codex 提示词指南建议交代期望行为、相关上下文、约束和验证方式。上面的检查规则由我为样例制定,并非 Codex 的官方校验格式。

2026 年 11 月 2 日,博客下载包经过独立解压,再运行 8 项验收及 3 个命令行场景;全部得到预期结果,输入与代码哈希未变。官方资料于同日复核。教学代码与文章含 AI 辅助。