首页 > 解决方案 > JSON 模式 - 变量 contentMediaType - 使用正则表达式?

问题描述

是否可以编写一个包含 base64 编码内容的 JSON 模式,其中媒体类型可以是任何东西?我目前有以下内容:

 "media" : { 
     "type": "object",
     "properties": {
         "content" : { 
             "type": "string", 
             "contentEncoding": "base64",
             "contentMediaType": "[a-z]\/[a-z]"
         }
      }
 },

这是否有效。可以对contentMediaType属性使用正则表达式吗?

如果不是,以下是否有效?

 "media" : { 
     "type": "object",
     "properties": {
         "content" : { 
             "type": "string", 
             "contentEncoding": "base64",  
         },
         "contentMediaType": {
             "type": "string",
             "pattern": "[a-z]\/[a-z]"
          }
      }
 },

实现这一目标的最清晰方法是什么?

标签: jsonschemamedia-type

解决方案


这就是规范所说的:https ://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.8.4

contentMediaType是一个字符串。您的正则表达式是一个字符串,因此它是按字面意思解释的。RFC 2046 中没有匹配的媒体类型,所以我不希望事情进展顺利。但是你的正则表达式太松散了,为什么还要包括它呢?

还要记住,JSON Schema 将此关键字解释为仅注释(https://json-schema.org/draft/2020-12/json-schema-validation.html#content) - 这些属性仅存在于向消费应用程序提供信息,并且永远不会有时间针对此模式评估数据实例会因此关键字而失败。


推荐阅读