我正在使用以下架构来验证图像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 for PHP来验证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"
]
}
答案 0 :(得分:1)
您的问题是JSON Hyper-Schema Draft#4不再支持的旧语法。它将 contentEncoding 更改为 binaryEncoding (请参阅更改日志here)。
该规范的相关摘录如下:
"imgData": {
"title": "Article Illustration (small)",
"type": "string",
"media": {
"binaryEncoding": "base64",
"type": "image/png"
}
}
另外,您没有提到您正在使用哪个验证器。这可能很重要,因为不同实施的合规性可能会有所不同。
更新:此外,$schema
应该是http://json-schema.org/draftv4/hyper-schema
,用于超级架构处理。