base64字符串的JSON架构验证无效

base64字符串的JSON架构验证无效,json,jsonschema,Json,Jsonschema,我正在使用以下架构验证image base64字符串: { "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "image": { "type": "string", "media": { "contentEncoding": "base64", "oneOf": [

我正在使用以下架构验证image base64字符串:

 {
   "$schema": "http://json-schema.org/draft-04/schema#",
   "type": "object",
   "properties": {
     "image": {
       "type": "string",
       "media": {
         "contentEncoding": "base64",
         "oneOf": [
               { "mediaType": "image/png" },
               { "mediaType": "image/jpg" },
               { "mediaType": "image/jpeg" }
         ]
       }
     }
   },
   "required": [
     "image"
   ]
 }
但模式不起作用,任何字符串,甚至无效,都会传递给应用程序

我正在使用验证json输入

更新

这是我试图改变的,但不起作用

{
 "$schema": "http://json-schema.org/draft-04/schema#",
 "type": "object",
 "properties": {
   "image": {
     "title": "image",
     "type": "string",
     "media": {
       "binaryEncoding": "base64",
       "type": "image/png"
     }
   }
 },
 "required": [
   "image"
 ]
 }

您的问题是JSON超模式草案4中不再支持的旧语法。它将contentEncoding更改为二进制编码(请参阅更改日志)

规范的相关摘录如下:

    "imgData": {
        "title": "Article Illustration (small)",
        "type": "string",
        "media": {
            "binaryEncoding": "base64",
            "type": "image/png"
        }
    }
另外,您没有提到正在使用哪个验证器。这可能很重要,因为不同实现之间的法规遵从性可能会有所不同

更新:另外,
$schema
应该是
http://json-schema.org/draftv4/hyper-schema
用于超架构处理。

我正在使用它。我试过你的密码,但没用neither@blahblah,看看。首先,您应该修改$schema(根据我的更新)。我还建议,如果您的PHP实现仍然不起作用,请尝试使用进行验证——他们说hyper schema现在可以开箱即用。我还没有尝试过您的特定场景,因为您已经使用模式和示例进行了设置,所以这样做应该没什么大不了的。