參考

媒體:字串編碼非 JSON 資料

在 draft 7 中新增

JSON Schema 有一組關鍵字,用於描述和選擇性地驗證儲存在 JSON 字串內的非 JSON 資料。由於為許多媒體類型編寫驗證器會很困難,因此 JSON Schema 驗證器不需根據這些關鍵字驗證 JSON 字串的內容。然而,這些關鍵字對於使用已驗證 JSON 的應用程式仍然很有用。

contentMediaType

contentMediaType 關鍵字指定字串內容的 MIME 類型,如 RFC 2046 中所述。有一個 IANA 官方註冊的 MIME 類型列表,但支援的類型集將取決於應用程式和作業系統。Mozilla 開發者網路也維護了一個 對網路而言重要的較短 MIME 類型列表

contentEncoding

contentEncoding 關鍵字指定用於儲存內容的編碼,如 RFC 2054,第 6.1 節RFC 4648 中所述。

可接受的值為 quoted-printablebase16base32base64。如果未指定,則編碼與包含 JSON 文件相同。

在不深入研究這些編碼的低階細節的情況下,對於現代用法來說,實際上只有兩個選項有用

  • 如果內容的編碼與封閉 JSON 文件相同(實際上,幾乎總是 UTF-8),則將 contentEncoding 保持未指定,並按原樣將內容包含在字串中。這包括基於文字的內容類型,例如 text/htmlapplication/xml
  • 如果內容為二進位資料,則將 contentEncoding 設定為 base64,並使用 Base64 編碼內容。這將包括許多圖像類型,例如 image/png 或音訊類型,例如 audio/mpeg

contentSchema

在 draft 2019-09 中新增

文件即將推出

範例

以下 Schema 表示字串包含 HTML 文件,使用與周圍文件相同的編碼進行編碼

schema
{ "type": "string", "contentMediaType": "text/html"}
資料
"<!DOCTYPE html><html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head></html>"
符合綱要

以下的綱要表示一個字串包含一個 PNG 圖像,使用 Base64 編碼。

schema
{ "type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}
資料
"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAA..."
符合綱要

需要協助嗎?

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

幫助我們讓文件更完善!

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

仍然需要協助嗎?

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