新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)JSON教程:JSON模式
JSON 模式(Schema)是一種基于 JSON 格式定義 JSON 數(shù)據(jù)結(jié)構(gòu)的規(guī)范。它被寫(xiě)在 IETF 草案下并于 2011 年到期。它用來(lái):

- 描述現(xiàn)有數(shù)據(jù)格式。
- 干凈的人類(lèi)和機(jī)器可讀的文檔。
- 完整的結(jié)構(gòu)驗(yàn)證,有利于自動(dòng)化測(cè)試。
- 完整的結(jié)構(gòu)驗(yàn)證,可用于驗(yàn)證客戶(hù)端提交的數(shù)據(jù)。
JSON 模式驗(yàn)證庫(kù)
目前有好幾個(gè)驗(yàn)證器可用于不同的編程語(yǔ)言。但是目前最完整和兼容 JSON 模式的驗(yàn)證器是 JSV。
| 語(yǔ)言 | 程序庫(kù) |
|---|---|
| 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 模式示例
下面是一個(gè)基本的 JSON 模式,其中涵蓋了一個(gè)經(jīng)典的產(chǎn)品目錄說(shuō)明:
{
"$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"]
}我們來(lái)看一下可以用于這一模式中的各種重要關(guān)鍵字:
| 關(guān)鍵字 | 描述 |
|---|---|
| $schema | $schema 關(guān)鍵字狀態(tài),表示這個(gè)模式與 v4 規(guī)范草案書(shū)寫(xiě)一致。 |
| title | 用它給我們的模式提供了標(biāo)題。 |
| description | 關(guān)于模式的描述。 |
| type | type 關(guān)鍵字在我們的 JSON 數(shù)據(jù)上定義了第一個(gè)約束:必須是一個(gè) JSON 對(duì)象。 |
| properties | 定義各種鍵和他們的值類(lèi)型,以及用于 JSON 文件中的最小值和最大值。 |
| required | 存放必要屬性列表。 |
| minimum | 給值設(shè)置的約束條件,表示可以接受的最小值。 |
| exclusiveMinimum | 如果存在 "exclusiveMinimum" 并且具有布爾值 true,如果它嚴(yán)格意義上大于 "minimum" 的值則實(shí)例有效。 |
| maximum | 給值設(shè)置的約束條件,表示可以接受的最大值。 |
| exclusiveMaximum | 如果存在 "exclusiveMinimum" 并且具有布爾值 true,如果它嚴(yán)格意義上小于 "maximum" 的值則實(shí)例有效。 |
| multipleOf | 如果通過(guò)這個(gè)關(guān)鍵字的值分割實(shí)例的結(jié)果是一個(gè)數(shù)字則表示緊靠 "multipleOf" 的數(shù)字實(shí)例是有效的。 |
| maxLength | 字符串實(shí)例字符的最大長(zhǎng)度數(shù)值。 |
| minLength | 字符串實(shí)例字符的最小長(zhǎng)度數(shù)值。 |
| pattern | 如果正則表達(dá)式匹配實(shí)例成功則字符串實(shí)例被認(rèn)為是有效的。 |
可以在 http://json-schema.org 上檢出可用于定義 JSON 模式的完整關(guān)鍵字列表。上面的模式可用于測(cè)試下面給出的 JSON 代碼的有效性:
[
{
"id": 2,
"name": "An ice sculpture",
"price": 12.50,
},
{
"id": 3,
"name": "A blue mouse",
"price": 25.50,
}
] 當(dāng)前文章:創(chuàng)新互聯(lián)JSON教程:JSON模式
標(biāo)題網(wǎng)址:http://m.fisionsoft.com.cn/article/djpgcoc.html


咨詢(xún)
建站咨詢(xún)
