参考

媒体:字符串编码非 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-printablebase16base32base64。如果未指定,则编码与包含的 JSON 文档相同。

无需深入了解每种编码的底层细节,实际上只有两种选项适用于现代用法

  • 如果内容使用与封闭 JSON 文档相同的编码(实际上几乎总是 UTF-8),请不指定 contentEncoding,并将内容按原样包含在字符串中。这包括基于文本的内容类型,例如 text/htmlapplication/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..."
符合模式

需要帮助?

您觉得这些文档有用吗?

帮助我们改进文档!

在 JSON Schema 中,我们重视文档贡献,就像其他任何类型的贡献一样!

仍然需要帮助?

学习 JSON Schema 通常很令人困惑,但不用担心,我们来帮助您!。