json - Everit 验证器:名为“type”的 JsonSchema 属性
问题描述
使用Everit,我试图提出一个 json 模式来验证
{
"type": "my content type",
"name": "content name"
}
我的解决方案:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "model.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false,
"required": [
"type",
"name"
]
}
这会产生错误:properties/type: expected type is one of JsonArray or String, found: JsonObject
这个模式加载得很好:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "model.json",
"type": "object",
"properties": {
"some-type": { <<-- Only field name changed
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false,
"required": [
"some-type",
"name"
]
}
但是“类型”字段是我不想重命名的数据库字段。如何定义 json 模式以使用名为“type”的属性?
属性下的“类型”属性名称是否解释为保留关键字?
谢谢,罗纳德
解决方案
根据另一个验证器(https://www.jsonschemavalidator.net/),您的架构完全没问题。
这可能是 Everit 验证器中的一个错误,因此您也可以考虑寻找替代方案。就个人而言,到目前为止,我一直很喜欢networknt/json-schema-validator,但尚未使用您的特定示例进行测试。
话虽如此,根据 Everit 文档,当它确定适用的草稿版本时,它会查找以下内容:
"$schema": "http://json-schema.org/draft-07/schema"
但是在您的示例中,您使用:
"$schema": "http://json-schema.org/draft-07/schema#"
#
如果没有尾随片段 ( ) ,可能值得再次尝试。
推荐阅读
- java - CXF 网络服务客户端 ObjectFactory
- google-sheets - 基于 Google 电子表格中日期的动态范围迷你图
- three.js - 文字模糊且无法正确显示
- c - 为什么我得到 -0 而不是 0?
- vuejs2 - 如果在 vue 道具中可以需要吗?
- c++ - 让 gRPC 客户端处于侦听模式以接收来自服务器的消息
- ruby-on-rails - Rails:用户信息未更新(使用哈希渲染 ActiveModel Serializer Null)
- php - 非静态方法不应该被静态调用
- javascript - 从 java 文件中的函数弹出一个简单的文本消息警报
- python - Python:计算二次方程的正根