W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
JSON 模式(Schema)是一種基于 JSON 格式定義 JSON 數(shù)據(jù)結(jié)構(gòu)的規(guī)范。它被寫在 IETF 草案下并于 2011 年到期。它用來:
目前有好幾個(gè)驗(yàn)證器可用于不同的編程語言。但是目前最完整和兼容 JSON 模式的驗(yàn)證器是 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. |
下面是一個(gè)基本的 JSON 模式,其中涵蓋了一個(gè)經(jīng)典的產(chǎn)品目錄說明:
{
"$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"]
}
我們來看一下可以用于這一模式中的各種重要關(guān)鍵字:
關(guān)鍵字 | 描述 |
---|---|
$schema | $schema 關(guān)鍵字狀態(tài),表示這個(gè)模式與 v4 規(guī)范草案書寫一致。 |
title | 用它給我們的模式提供了標(biāo)題。 |
description | 關(guān)于模式的描述。 |
type | type 關(guān)鍵字在我們的 JSON 數(shù)據(jù)上定義了第一個(gè)約束:必須是一個(gè) JSON 對象。 |
properties | 定義各種鍵和他們的值類型,以及用于 JSON 文件中的最小值和最大值。 |
required | 存放必要屬性列表。 |
minimum | 給值設(shè)置的約束條件,表示可以接受的最小值。 |
exclusiveMinimum | 如果存在 "exclusiveMinimum" 并且具有布爾值 true,如果它嚴(yán)格意義上大于 "minimum" 的值則實(shí)例有效。 |
maximum | 給值設(shè)置的約束條件,表示可以接受的最大值。 |
exclusiveMaximum | 如果存在 "exclusiveMinimum" 并且具有布爾值 true,如果它嚴(yán)格意義上小于 "maximum" 的值則實(shí)例有效。 |
multipleOf | 如果通過這個(gè)關(guān)鍵字的值分割實(shí)例的結(jié)果是一個(gè)數(shù)字則表示緊靠 "multipleOf" 的數(shù)字實(shí)例是有效的。 |
maxLength | 字符串實(shí)例字符的最大長度數(shù)值。 |
minLength | 字符串實(shí)例字符的最小長度數(shù)值。 |
pattern | 如果正則表達(dá)式匹配實(shí)例成功則字符串實(shí)例被認(rèn)為是有效的。 |
可以在 http://json-schema.org 上檢出可用于定義 JSON 模式的完整關(guān)鍵字列表。上面的模式可用于測試下面給出的 JSON 代碼的有效性:
[
{
"id": 2,
"name": "An ice sculpture",
"price": 12.50,
},
{
"id": 3,
"name": "A blue mouse",
"price": 25.50,
}
]
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: