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