JSON模式是基於JSON格式定義JSON資料結構的規範。它被寫在IETF草案,於2011年到期。 JSON模式:
描述現有的資料格式
乾淨的人類和機器可讀的文件
完成結構驗證,可用於自動化測試
完成結構驗證,驗證用戶端提交的資料
有幾個驗證器目前可用於不同的程式設計語言。目前最完整和最相容的JSON模式驗證可用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": "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"] }
讓我們來看看在這個模式中可以使用的各種重要的關鍵詞:
關鍵字 | 描述 |
---|---|
$schema | The $schema 關鍵字狀態,這種模式被寫入草案V4規範。 |
title | 將使用此架構提供一個標題 |
description | 架構的一點描述 |
type | 我們 JSON 資料型別關鍵字定義的第一個約束條件:它必須是一個JSON物件 |
properties | 定義各個鍵和它們的值型別,最小和最大值中要使用JSON檔案 |
required | 這樣可以使所需的屬性的列表 |
minimum | 這是約束的值,並代表可接受的最小值 |
exclusiveMinimum | 如果“exclusiveMinimum”的存在,並且具有布林值true的範例是有效的,如果它是嚴格的最低限度的值 |
maximum | 這是約束的值被提上表示可接受的最大值 |
exclusiveMaximum | 如果“exclusiveMaximum”的存在,並且具有布林值true的範例是有效的,如果它是嚴格的值小於“最大”。 |
multipleOf | 數值範例有效反對“multipleOf”分工的範例此關鍵字的值,如果結果是一個整數。 |
maxLength | 字串範例的長度被定義為字元的最大數目 |
minLength | 字串範例的長度被定義為字元的最小數目 |
pattern | String範例被認為是有效的,如果正規表示式匹配成功範例 |
也可以同時查閱 http://json-schema.org 的關鍵字可以用在定義JSON模式的完整列表。以上模式可用於測試的有效性,下面給出的JSON程式碼:
[ { "id": 2, "name": "An ice sculpture", "price": 12.50, }, { "id": 3, "name": "A blue mouse", "price": 25.50, } ]