base64字符串的JSON架构验证无效
我正在使用以下架构验证image base64字符串: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": [
{
"$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现在可以开箱即用。我还没有尝试过您的特定场景,因为您已经使用模式和示例进行了设置,所以这样做应该没什么大不了的。