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

Zod对象Schema自定义返回错误消息的问题求助

Zod对象Schema自定义返回错误消息的问题求助

我最近在使用Zod定义数据校验Schema时遇到了个小困惑,想请教下各位大佬:

我想要实现的校验逻辑是:

  • 当传入的待校验值是数组时,返回我自定义的错误消息
  • 如果传入的是数组以外的非对象类型(比如字符串、数字这类),则保留Zod默认的"expected object, received ..."错误提示

于是我写出了这样的Schema代码:

const mySchema = z.object(
  {
    key1: z.string().nonempty(),
    key2: z.record(z.unknown()).optional(),
    key3: z.string().optional(),
  },
  { error: (iss) => (Array.isArray(iss.input) ? 'custom message' : undefined) }
).strict();

但实际测试的时候,当我用safeParse去校验一个数组变量时,返回的错误却是Zod默认的"expected object, received array",完全没触发我写的自定义错误逻辑。我翻来覆去检查了好几遍代码,还是没搞懂问题出在哪,有没有懂行的朋友能帮忙指点一下呀?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.09 02:59:50