JSON 框架模式(Schema)
JSON模式是基於JSON格式定義JSON數據結構的規範。它被寫在IETF草案,於2011年到期。 JSON模式:
-
描述現有的數據格式
-
乾淨的人類和機器可讀的文檔
-
完成結構驗證,可用於自動化測試
-
完成結構驗證,驗證客戶端提交的數據
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模式示例
以下是一個基本的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, } ]