当使用 zod 校验包含对象数组的结构(如 `sizes: [{ price, off_price, sell_quantity }]`)时,若数组元素缺失必填字段,`.flatten()` 默认无法展开嵌套路径错误;需改用 `.format()` 或遍历 `.issues` 才能精准定位到 `sizes[0].price` 等具体字段错误。
Zod 的 .flatten() 方法设计用于扁平化顶层字段错误(如 “sizes” 本身为空),但对数组内嵌套对象的字段级错误(如 sizes[0].price)默认不递归展开——这正是你遇到 “sizes”:[“Required”,”Required”,”Required”] 这类模糊提示的根本原因。
要真正暴露每一项的细粒度错误,推荐以下两种专业方案:
✅ 方案一:使用 .format() 获取结构化嵌套错误(推荐)
.format() 返回一个与原始数据结构对齐的错误树,天然支持数组索引和对象键路径: