JSON Schema的關鍵字太少,有些默認的校驗無法滿足效果,需要自定義校驗關鍵字,ajv-errors提供一些常見的validator關鍵字
用法
var Ajv = require('ajv');
var ajv = new Ajv({$data:true});
//添加所有的關鍵字
require('ajv-keywords')(ajv);
//只添加instanceof關鍵字
require('ajv-keywords')(ajv, 'instanceof');
//添加多個關鍵字
require('ajv-keywords')(ajv, ['typeof', 'instanceof']);
//只添加instanceof關鍵字,其他代碼不添加(類似按需加載)
require('ajv-keywords/keywords/instanceof')(ajv);
關鍵字
number
string
-
-
支持標準
pattern
不支持的標誌 -
此關鍵字僅適用於字符串。如果數據不是字符串,則驗證成功
-
-
formatmaximum、formatminimum、formatexclusivemaximum、formatexclusiveminimum
校驗format:datetime、time、date類型 的範圍
-
Json schema是嚴格校驗的,所以字符串中的空格也會影響校驗結果
transform
可以在校驗前改變字符串trim
: remove whitespace from start and endtrimLeft
: remove whitespace from starttrimRight
: remove whitespace from endtoLowerCase
: case string to all lower casetoUpperCase
: case string to all upper casetoEnumCase
: case string to match case in schema
arrays
-
對象組成的數組每個值必須是不同的
objects
-
對象中所有的都要滿足
-
對象中只要有一個滿足
-
對象中有且只有一個滿足
-
對象中不存在prohibited中指定的屬性
-
- 校驗深層結構中某個屬性具體的校驗
-
- 校驗數組(對象)深層結構中某個值是必須的
computer keywords
-
可用if/then/else代替
-
select/selectcases/selectdefault
select查詢某個值,匹配selectcases找那個值,並執行其中校驗。匹配不到則校驗selectdefault
All types
-
設置默認值,並且可以擴展自定義函數。類似uuid等