參考
媒體:字串編碼非 JSON 資料
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-printable
、base16
、base32
和 base64
。如果未指定,則編碼與包含 JSON 文件相同。
在不深入研究這些編碼的低階細節的情況下,對於現代用法來說,實際上只有兩個選項有用
- 如果內容的編碼與封閉 JSON 文件相同(實際上,幾乎總是 UTF-8),則將
contentEncoding
保持未指定,並按原樣將內容包含在字串中。這包括基於文字的內容類型,例如text/html
或application/xml
。 - 如果內容為二進位資料,則將
contentEncoding
設定為base64
,並使用 Base64 編碼內容。這將包括許多圖像類型,例如image/png
或音訊類型,例如audio/mpeg
。
contentSchema
文件即將推出
範例
以下 Schema 表示字串包含 HTML 文件,使用與周圍文件相同的編碼進行編碼
{ "type": "string", "contentMediaType": "text/html"}
資料
"<!DOCTYPE html><html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head></html>"
以下的綱要表示一個字串包含一個 PNG 圖像,使用 Base64 編碼。
{ "type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}
資料
"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAA..."