參考

基礎概念

什麼是 schema?中,我們描述了schema是什麼,並希望能證明 schema 語言的必要性。在這裡,我們繼續撰寫一個簡單的 JSON Schema。

哈囉,世界!

在學習任何新語言時,通常從最簡單的事情開始會很有幫助。在 JSON Schema 中,一個空的物件是一個完全有效的 schema,它會接受任何有效的 JSON。

schema
{}

只要是有效的 JSON,這就會接受任何內容

資料
42
符合 schema
資料
"我是一個字串"
符合 schema
資料
{ "一個": [ "任意", "巢狀" ], "資料": "結構" }
符合 schema
草案 6 的新功能

您也可以使用 true 來代替空物件,以表示與任何內容匹配的 schema,或使用 false 來表示與任何內容都不匹配的 schema。

只要是有效的 JSON,這就會接受任何內容

schema
true
資料
42
符合 schema
資料
"我是一個字串"
符合 schema
資料
{ "一個": [ "任意", "巢狀" ], "資料": "結構" }
符合 schema

此 schema 的文件將始終無效

schema
false
資料
"反抗是徒勞的... 這永遠都會失敗!!!"
不符合綱要

type 關鍵字

當然,如果我們只是想接受任何 JSON 文件,就不會使用 JSON Schema 了。在 JSON Schema 中最常見的做法是限制為特定類型。type 關鍵字就是用於此目的。

當本書提到 JSON Schema「關鍵字」時,指的是物件中鍵/值對的「鍵」部分。編寫 JSON Schema 的大部分工作都涉及將特殊的「關鍵字」映射到物件中的值。

例如,在以下範例中,只接受字串

schema
{ "type": "string" }
資料
"我是一個字串"
符合 schema
資料
42
不符合綱要

type 關鍵字在這裡有更詳細的說明。

宣告 JSON Schema

要判斷 JSON Schema 使用哪個草案版本並不總是容易的。您可以使用 $schema 關鍵字來宣告該綱要依據哪個版本的 JSON Schema 規範編寫。請參閱$schema以取得更多資訊。通常建議包含它,但並非必要。

為了簡潔起見,本書中的大多數範例都不包含 $schema 關鍵字,但在實際應用中應始終使用它。

schema
{ "$schema": "https://json-schema.dev.org.tw/draft/2020-12/schema" }
草案版本特定的資訊
在 Draft 4 中,$schema 值為 https://json-schema.dev.org.tw/schema# 指的是最新版本的 JSON Schema。此用法已遭棄用,必須使用特定版本的 URI。

宣告唯一識別符

草案 6 的新功能

最佳實務是為每個綱要包含一個 $id 屬性作為唯一識別符。目前,只需將其設定為您控制的網域上的 URL,例如

schema
{ "$id": "http://yourdomain.com/schemas/myschema.json" }

當您開始建構複雜的綱要時,$id 的詳細資訊會變得更加明顯。

草案版本特定的資訊
在 Draft 4 中,$id 只是 id(沒有美元符號)。

需要協助嗎?

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

幫助我們使文件更完善!

在 JSON Schema,我們重視文件貢獻,與其他類型的貢獻同等重要!

仍然需要協助嗎?

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