Json-schema簡介和應用
瞭解json schema首先要知道什麼是json?
json 是 JavaScript Object Notation 的縮寫,它是一種簡化的資料交換格式,是目前網際網路服務間進行資料交換最常見的一種交換格式,具有簡潔、可讀性好等特點。
在json中常見的資料型別主要包括
-
object
{ "key1": "value1", "key2": "value2" }
-
array
[ "first", "second", "third" ]
-
number
42
3.1415926 -
string
"This is a string"
- boolean
true
false - null
null
一個示例json格式比如:
{
"fruits": [ "apple", "orange", "pear" ],
"vegetables": [
{
"veggieName": "potato",
"veggieLike": true
},
{
"veggieName": "broccoli",
"veggieLike": false
}
]
}
如前文所述,json是目前應用非常廣泛的資料狡猾格式。既然是用於資料交換的格式,那麼就存在資料交換的是雙方,如何約定或校驗對方的資料格式符合要求,就成了服務互動需要解決的一個問題。所以Json Schema就是用來定義json資料約束的一個標準。根據這個約定模式,交換資料的雙方可以理解json資料的要求和約束,也可以據此對資料進行驗證,保證資料交換的正確性。
目前最新的Json-schema版本是draft 7,釋出於2018-03-19。下面我們就以官網的一個例項來看看Json-schema是如何進行資料約束以及其應用
如下是一個schema例項:
{
"$schema": "",
"$id": "",
"title": "Product",
"description": "A product from Acme's catalog",
"type": "object",
"properties": {
"productId": {
"description": "The unique identifier for a product",
"type": "integer"
},
"productName": {
"description": "Name of the product",
"type": "string"
},
"price": {
"description": "The price of the product",
"type": "number",
"exclusiveMinimum": 0
},
"tags": {
"description": "Tags for the product",
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"uniqueItems": true
},
"dimensions": {
"type": "object",
"properties": {
"length": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [ "length", "width", "height" ]
}
},
"required": [ "productId", "productName", "price" ]
}
分析說明:
"$schema": "",
說明當前使用的schema版本,可以不包含
"$id": "",
當前schema的唯一id標識,一般指向一個自主域名。方便後續引用,可以不包含
"title": "Product",
當前schema的標題,簡要描述資訊,可不包含
"description": "A product from Acme's catalog",
詳細描述資訊,可不包含
"type": "object",
約束物件是object,也就是在 { }
中的資料
"properties": {
"productId": {
"description": "The unique identifier for a product",
"type": "integer"
},
object中具體屬性的約束,description是描述資訊,不產生具體約束。
type約束productid
屬性型別為整型
"productName": {
"description": "Name of the product",
"type": "string"
},
約束productName
屬性型別為字元型
"price": {
"description": "The price of the product",
"type": "number",
"exclusiveMinimum": 0
},
約束price
屬性型別為數字型,可以是整型或浮點型。exclusiveMinimum
約束該數字>0(不包含0)
"tags": {
"description": "Tags for the product",
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"uniqueItems": true
},
約束tag
屬性是array陣列。items是陣列項約束,這裡約束陣列項均為字元型minItems
陣列至少包含1項。uniqueItems
約束陣列中每項不得重複
"dimensions": {
"type": "object",
"properties": {
"length": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [ "length", "width", "height" ]
}
},
約束dimensions
巢狀物件,其中length,width,height均為數字型別
且這三個欄位在dimensions物件中必須包含
"required": [ "productId", "productName", "price" ]
當前資料物件必須包含productId,productName,price三個欄位
以上是對Json-Schema的簡要說明,詳細介紹大家可以關注後續更新和相關實戰課。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2041/viewspace-2806809/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- scrapy框架簡介和基礎應用框架
- Testcontainer桌面應用簡介AI
- 自助分析工具Power BI的簡介和應用
- 使用Java和Dapr構建雲原生應用簡介Java
- 7.3 應用場景簡介
- 簡單的介紹伺服器和Ajax的應用伺服器
- WebSocket 簡介及應用例項Web
- Lucene介紹及簡單應用
- gRPC應用實戰:(一)簡介RPC
- Web 應用安全性: HTTP簡介WebHTTP
- Disruptor的簡單介紹與應用
- Python Web 應用程式 Tornado 框架簡介PythonWeb框架
- LUKS加密卷應用技術簡介加密
- 移動應用程式開發簡介!
- 模切廠ERP應用及方案簡介
- 01 . ELK Stack簡介原理及部署應用
- xBIM學習與應用01 xBIM簡介
- HTML5 應用程式快取簡介HTML快取
- Hive簡介、應用場景及架構原理Hive架構
- ProxySQL簡介原理及讀寫分離應用SQL
- web 應用線上編輯器 glitch 簡介Web
- LAMP平臺服務簡介、部署及應用LAMP
- 【資料結構和演算法】Trie樹簡介及應用詳解資料結構演算法
- mssql sqlserver updatetext關鍵字應用簡介說明SQLServer
- PHP-Parse 簡介以及在 Hyperf 中的應用PHP
- Libevent應用 (零) Libevent簡單介紹與安裝
- HTTP介紹和HTML簡介HTTPHTML
- FastDFS簡介,運用AST
- SpringBoot2.0應用(一):SpringBoot2.0簡單介紹Spring Boot
- 分散式數字身份DID簡介(五)DID的應用分散式
- 01 . Shell詳細入門介紹及簡單應用
- 手把手帶你寫AR應用--AR尺子簡介
- 移動應用安全常用元件Soot、Flowdroid簡介&基本使用元件
- Xcode 文字巨集(Text Macros)的介紹和應用XCodeMacROS
- Etcd叢集的介紹和選主應用
- PHP Parser 簡介和應用 - 為你的程式碼自動補全單元測試PHP
- 鬧鐘應用功能簡介
- 面向NLP場景應用的智慧輔助建模(一)簡介