json-schema入門

  • 2019 年 12 月 4 日
  • 筆記

本文作者:IMWeb moonye 原文出處:IMWeb社區 未經同意,禁止轉載

json-schema(一)

相關知識點

  1. 它是什麼 描述json的數據格式
  2. 有什麼優點
    • 描述自定義的數據格式
    • 清晰,對人和機器友好
    • 完整的結構校驗
      • 自動化測試
      • 校驗表單提交數據

一個簡單的示例構建自己的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"]

實際應用

  1. 數據校驗

完成表單數據校驗,數據類型,格式定義和實際dom分離 schema

var validation = schema.validate({        q: 'OK',      start: -5,      num: -100.99,      xyz: 'additionalProperty'  })

未壓縮情況下面加起來不到20kb,壓縮體積會更小,適合數據校驗

直出後這裡node後台層應該是需要一個強類型的結構來定義協議,jsonschema是個不錯的選擇

  1. 通過json-scheme生成表單,動態配置屬性,json格式可以在外部定義,可以繼承等等

json-editor

  1. jsonschema數據格式生成器

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

  1. 文檔格式生成器

demo 目前僅支持jade語法。。。。

  1. 數據格式的重用,繼承
    • 直接引用另一個jsonschema中定義的類型
    • 通過運算符對引用的json格式做擴展,引入

相關文檔可參考這裡

工具支持

方便書寫jsonschema格式 vm工具 json schema lint 一個在線的格式檢驗工具,可以作為插件集成到構建中去

相關標準文檔

  1. json-schema core 描述基本的json schema格式
  2. json-schema validate 描述json-schema的校驗標準