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