json-schema入門
- 2019 年 12 月 4 日
- 筆記
本文作者:IMWeb moonye 原文出處:IMWeb社區 未經同意,禁止轉載
json-schema(一)
相關知識點
- 它是什麼 描述json的數據格式
- 有什麼優點
- 描述自定義的數據格式
- 清晰,對人和機器友好
- 完整的結構校驗
- 自動化測試
- 校驗表單提交數據
一個簡單的示例構建自己的json-schema
一個數據對象或者API的數據是這樣的
{ "id": 1, "name": "A green door", "price": 12.50, "tags": ["home", "green"] }
json-scheme類似xml或者html,有一個聲明的頭
這裡可以看到有文檔遵循的協議格式,標題,描述以及文檔的類型
{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "Product", "description": "A product from Acme's catalog", "type": "object" }
如何描述對象的屬性,以及對象屬性上的規則
"properties": { "id": { "description": "The unique identifier for a product", "type": "integer"//數據的類型 }, "name": { "description": "Name of the product", "type": "string" }, "price": { "type": "number", "minimum": 0,//最小值 "exclusiveMinimum": true//排除掉最小值,不允許為0 }, "tags": { "type": "array",//數據的類型是數組 "items": {//數組裡每個item都是字符串 "type": "string" }, "minItems": 1, "uniqueItems": true } }, "required": ["id", "name"]
實際應用
- 數據校驗
完成表單數據校驗,數據類型,格式定義和實際dom分離 schema
var validation = schema.validate({ q: 'OK', start: -5, num: -100.99, xyz: 'additionalProperty' })
未壓縮情況下面加起來不到20kb,壓縮體積會更小,適合數據校驗
直出後這裡node後台層應該是需要一個強類型的結構來定義協議,jsonschema是個不錯的選擇
- 通過json-scheme生成表單,動態配置屬性,json格式可以在外部定義,可以繼承等等

- jsonschema數據格式生成器
jsonschema.net 使用者自己書寫數據,框架根據數據生成格式

- 文檔格式生成器
demo 目前僅支持jade語法。。。。
- 數據格式的重用,繼承
- 直接引用另一個jsonschema中定義的類型
- 通過運算符對引用的json格式做擴展,引入
相關文檔可參考這裡
工具支持
方便書寫jsonschema格式 vm工具 json schema lint 一個在線的格式檢驗工具,可以作為插件集成到構建中去
相關標準文檔
- json-schema core 描述基本的json schema格式
- json-schema validate 描述json-schema的校驗標準
