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框架簡介和基礎應用框架
- 自助分析工具Power BI的簡介和應用
- Android應用及應用管理簡介Android
- 使用Java和Dapr構建雲原生應用簡介Java
- 7.3 應用場景簡介
- XML SOAP應用簡介 (轉)XML
- 簡單的介紹伺服器和Ajax的應用伺服器
- Lucene介紹及簡單應用
- WebSocket 簡介及應用例項Web
- Disruptor的簡單介紹與應用
- Web 應用安全性: HTTP簡介WebHTTP
- gRPC應用實戰:(一)簡介RPC
- 移動應用程式開發簡介!
- LUKS加密卷應用技術簡介加密
- arguments的應用示例簡單介紹
- SAP作業型別應用簡介型別
- kylix 資料庫應用簡介 (轉)資料庫
- less的介紹和應用
- 01 . ELK Stack簡介原理及部署應用
- xBIM學習與應用01 xBIM簡介
- web 應用線上編輯器 glitch 簡介Web
- HTML5 應用程式快取簡介HTML快取
- WebSphere Remote Server 簡介及其應用舉例WebREMServer
- RPM 的介紹和應用
- Servlet第三篇【request和response簡介、response的常見應用】Servlet
- ProxySQL簡介原理及讀寫分離應用SQL
- Python Web 應用程式 Tornado 框架簡介PythonWeb框架
- Hive簡介、應用場景及架構原理Hive架構
- LAMP平臺服務簡介、部署及應用LAMP
- 模切廠ERP應用及方案簡介
- Redis的11種Web應用場景簡介RedisWeb
- 轉貼:Java Pet Store 2.0 應用程式簡介Java
- CSS direction屬性簡介與實際應用CSS
- 簡介Linux的一般應用(轉)Linux
- Java桌面應用程式設計:SWT 簡介(轉)Java程式設計
- 【資料結構和演算法】Trie樹簡介及應用詳解資料結構演算法
- mssql sqlserver updatetext關鍵字應用簡介說明SQLServer
- PHP-Parse 簡介以及在 Hyperf 中的應用PHP