在Node.js中使用AJV时,null值能否通过指定的object类型校验?
JSON Schema与AJV校验问题解答
你的问题核心在于:Node.js里typeof null返回"object",但AJV遵循的是JSON Schema规范,二者对类型的定义不一样,所以null无法通过你提供的这个校验器。
具体原因:
- JSON Schema规范中,
type: "object"仅指代JSON中的对象类型(包括空对象),而null是单独的一种类型,不属于object范畴。 - AJV严格遵循JSON Schema标准,不会因为JS里的typeof特性就把null判定为object类型。当你传入null时,AJV会识别它的类型是
null,不符合type: "object"的校验规则,直接返回校验失败。
如果需要让null也能通过校验,你可以把Schema里的type字段改成数组形式,同时允许object和null类型:
private: { type: ["object", "null"], properties: { SSN: {type: "boolean"}, DOB: {type: "boolean"}, }, additionalProperties: false, errorMessage: "private", },
内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture
相关产品推荐
相关产品推荐

