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

如何创建带有动态字符串键的Zod验证对象?

在Zod中实现类似TypeScript Record<string, string>的对象验证

你需要的是验证对象的所有键为字符串、对应值也为字符串的通用结构,这和TypeScript里Record<string, string>的作用一致,但z.object()仅适用于定义固定键名的对象,所以你之前的写法无法生效。

在Zod中,专门提供了z.record()方法来处理这类键值对结构,正确写法如下:

// 验证键为字符串、值为字符串的对象
const dataSchema = z.record(z.string());

// 或者更明确地指定键和值的schema(效果和上面一致)
const dataSchema = z.record(z.string(), z.string());

验证示例

  • 合法输入:{ username: "john_doe", email: "john@example.com" } 会通过验证
  • 非法输入:{ [Symbol("id")]: "123" }(键为Symbol类型,不符合字符串键要求)会验证失败

注意:JavaScript中对象的非Symbol键会自动转换为字符串,所以像{ 123: "test" }这样的输入,实际键是字符串"123",会被z.record(z.string())判定为合法。

内容的提问来源于stack exchange,提问作者Amjad sibili

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:45:49