- JSON有用資源
- JSON - 快速指南
- JSON - 有用資源
- JSON - 討論
JSON模式
JSON Schema是一種基於JSON的規範,用於定義JSON資料的結構。它是在IETF草案下編寫的,該草案於2011年失效。JSON Schema:
- 描述您現有的資料格式。
- 清晰、易於理解的文件(人機可讀)。
- 完整的結構驗證,可用於自動化測試。
- 完整的結構驗證,用於驗證客戶端提交的資料。
JSON Schema驗證庫
目前有幾種針對不同程式語言的驗證器可用。目前,最完整和最相容的JSON Schema驗證器是JSV。
| 語言 | 庫 |
|---|---|
| C | WJElement (LGPLv3) |
| Java | json-schema-validator (LGPLv3) |
| .NET | Json.NET (MIT) |
| ActionScript 3 | Frigga (MIT) |
| Haskell | aeson-schema (MIT) |
| Python | Jsonschema |
| Ruby | autoparse (ASL 2.0); ruby-jsonschema (MIT) |
| PHP | php-json-schema (MIT). json-schema (Berkeley) |
| JavaScript | Orderly (BSD); JSV; json-schema; Matic (MIT); Dojo; Persevere (modified BSD or AFL 2.0); schema.js。 |
JSON Schema示例
下面是一個基本的JSON模式,它涵蓋了經典的產品目錄描述:
{
"$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
}
},
"required": ["id", "name", "price"]
}
讓我們檢查一下該模式中可以使用的一些重要關鍵字:
| 序號 | 關鍵字和描述 |
|---|---|
| 1 |
$schema $schema關鍵字指出此模式是根據草案v4規範編寫的。 |
| 2 |
title 您將使用此關鍵字為您的模式命名。 |
| 3 |
description 模式的簡短描述。 |
| 4 |
type type關鍵字定義了對JSON資料的第一個約束:它必須是一個JSON物件。 |
| 5 |
properties 定義各種鍵及其值型別、JSON檔案中使用的最小值和最大值。 |
| 6 |
required 此關鍵字列出必需的屬性。 |
| 7 |
minimum 這是對值施加的約束,表示可接受的最小值。 |
| 8 |
exclusiveMinimum 如果存在“exclusiveMinimum”並且其布林值為true,則當例項嚴格大於“minimum”的值時,該例項有效。 |
| 9 |
maximum 這是對值施加的約束,表示可接受的最大值。 |
| 10 |
exclusiveMaximum 如果存在“exclusiveMaximum”並且其布林值為true,則當例項嚴格小於“maximum”的值時,該例項有效。 |
| 11 |
multipleOf 如果將例項除以此關鍵字的值的結果為整數,則數值例項對於“multipleOf”有效。 |
| 12 |
maxLength 字串例項的長度定義為其字元的最大數量。 |
| 13 |
minLength 字串例項的長度定義為其字元的最小數量。 |
| 14 |
pattern 如果正則表示式成功匹配例項,則字串例項被認為有效。 |
您可以檢視http://json-schema.org以獲取定義JSON模式時可使用的關鍵字的完整列表。上述模式可用於測試以下JSON程式碼的有效性:
[
{
"id": 2,
"name": "An ice sculpture",
"price": 12.50,
},
{
"id": 3,
"name": "A blue mouse",
"price": 25.50,
}
]