
- 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, } ]