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