Draft-07 發行說明

對於 Core 和 Validation 規格,draft-07 是一個相對較小的更新。在驗證關鍵字和結果方面,它與 draft-06 完全向後相容。

有些差異存在於從 Hyper-Schema 移過來的關鍵字,以及建議將實例和 Schema 連結在一起的方式。最後,收集註解關鍵字值的過程比以前更清楚地定義了。

關鍵字

  • 沒有關鍵字變更行為
  • 沒有關鍵字被移除
  • 一些關鍵字從 Hyper-Schema 中移出,其中兩個被重新命名
關鍵字變更備註
["$comment"](../../draft-07/json-schema-core.html#rfc.section.9)新增至 Core適用於 Schema 維護者的註解,而不是 ["description"](../../draft-07/json-schema-validation.html#rfc.section.10.1),後者適合向終端使用者顯示
["if""then""else"](../../draft-07/json-schema-validation.html#rfc.section.6.6)新增至 Validation明確的條件式 Schema 評估
["readOnly"](../../draft-07/json-schema-validation.html#rfc.section.10.3)從 Hyper-Schema 移至 Validation不限於超媒體環境
["writeOnly"](../../draft-07/json-schema-validation.html#rfc.section.10.3)新增至 Validation一般唯寫欄位,包括但不限於密碼
["contentMediaType"](../../draft-07/json-schema-validation.html#rfc.section.8)從 Hyper-Schema 移至 Validation先前為 ["media": {"type": "..."}](../../draft-06/json-schema-hypermedia.html#rfc.section.5.3)
["contentEncoding"](../../draft-07/json-schema-validation.html#rfc.section.8)從 Hyper-Schema 移至 Validation先前為 ["media": {"binaryEncoding": "..."}](../../draft-06/json-schema-hypermedia.html#rfc.section.5.3)

請注意,"content*" 關鍵字並非強制驗證。

格式

新增、澄清或從較舊的草案中恢復了許多格式。

格式變更備註
["iri"](../../draft-07/json-schema-validation.html#rfc.section.7.3.5)已新增"uri" 的 I18N 等效項
["iri-reference"](../../draft-07/json-schema-validation.html#rfc.section.7.3.5)已新增"uri-reference" 的國際化 (I18N) 對應版本
["uri-template"](../../draft-07/json-schema-validation.html#rfc.section.7.3.6)已註明 IRI 支援沒有單獨的 IRI 模板標準
["idn-email"](../../draft-07/json-schema-validation.html#rfc.section.7.3.2)已新增"email" 的國際化 (I18N) 對應版本
["idn-hostname"](../../draft-07/json-schema-validation.html#rfc.section.7.3.3)已新增"hostname" 的國際化 (I18N) 對應版本
["json-pointer"](../../draft-07/json-schema-validation.html#rfc.section.7.3.7)已澄清僅用於字串形式,而非 URI 片段
["relative-json-pointer"](../../draft-07/json-schema-validation.html#rfc.section.7.3.7)已新增恢復了相對 JSON 指標草案
["regex"](../../draft-07/json-schema-validation.html#rfc.section.7.3.8)從 draft-03 還原ECMA 262 正規表示式
["date"](../../draft-07/json-schema-validation.html#rfc.section.7.3.1)從 draft-03 還原RFC 3339 "full-date"
["time"](../../draft-07/json-schema-validation.html#rfc.section.7.3.1)從 draft-03 還原RFC 3339 "full-time"

所有其他的 RFC 3339 日期、時間和持續時間名稱都保留供未來考慮。 如果添加為擴展格式,它們應以與其在 RFC 中的使用方式相容的方式實現,以確保未來的相容性。

關鍵字的分類

雖然它對驗證過程沒有直接影響,但這組草案會根據關鍵字的行為對其進行分類。 這些分類的名稱在整個文件中使用,因此了解它們很有用

請注意,definitions 不屬於這些類別中的任何一個,以美元符號開頭的核心關鍵字也是如此。

收集註解值

註解關鍵字(以前稱為元數據關鍵字)現在提供了關於如何收集多個值的指南,這些值適用於實例中的同一個位置。 預設情況下,在否定模式中找不到的所有值都會被收集為一個無序的集合。 以下例外情況記錄在適當的關鍵字下

  • readOnlywriteOnly 應進行邏輯 OR 運算
  • examples 應扁平化為單一的收集陣列

超媒體環境中的 JSON Schema

這些變更與許多驗證用例無關,並且更多地是 Hyper-Schema 使用者感興趣的。 但是,即使沒有 Hyper-Schema,如果您透過 HTTP 或其他超媒體環境存取實例文件,您可能會發現此部分很有用。

連結實例和 Schema

在與「profile」規格的作者討論後,我們得出結論,它用於 JSON Schema 是不正確的。 將實例連結到模式的關係新指南

連結關係變更備註
「describedBy」無變更網路可存取的 URL
「profile」已移除;使用「schema」不透明的識別 URI
「schema」已新增不透明的識別 URI

「schema」與過去草案中的「profile」一樣,也可以用作媒體類型參數

實例媒體類型

此部分的變更與 JSON Hyper-Schema 的關聯性高於驗證,但由於它們是核心規範的一部分,因此在此處進行說明。

媒體類型決定其自身的參數以及其自身的 URI 片段語法。 application/json 不允許任何參數或 URI 片段。

application/schema-instance+json 是一種可選的媒體類型,用於支援「schema」作為媒體類型參數的實例,並允許使用 JSON 指標語法的 URI 片段。

支援「schema」作為媒體類型參數,可以在超媒體環境中進行基於模式的內容協商。

支援 JSON 指標 URI 片段主要用於 JSON Hyper-Schema,因為超模式使用中涉及的許多 URI 都源自或指向實例文件中的位置,而不是整個文件。

需要協助嗎?

您覺得這些文件有幫助嗎?

幫助我們讓文件更出色!

在 JSON Schema 中,我們重視文件貢獻,就像其他類型的貢獻一樣!

仍然需要協助嗎?

學習 JSON Schema 通常令人困惑,但別擔心,我們在這裡提供協助!