参考
媒体:字符串编码非 JSON 数据
draft 7 中的新增功能
JSON 模式有一组 关键字 来描述并可选地验证存储在 JSON 字符串中的非 JSON 数据。由于为许多媒体类型编写验证器将非常困难,因此 JSON 模式验证器不需要根据这些关键字验证 JSON 字符串的内容。但是,这些关键字对于使用经过验证的 JSON 的应用程序仍然有用。
contentMediaType
该 contentMediaType
关键字指定字符串内容的 MIME 类型,如 RFC 2046 中所述。存在一个 由 IANA 正式注册的 MIME 类型列表,但支持的类型集将取决于应用程序和操作系统。Mozilla 开发者网络还维护了一个 对 Web 重要的 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
draft 2019-09 中的新增功能
文档即将推出
示例
以下模式表明字符串包含一个 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..."
符合模式