当前位置: 首页 > 知识库问答 >
问题:

如何用json-schema-validator对超模式验证JSON

暴夕
2023-03-14

我不知道如何正确设置超架构以使用json架构验证器。我使用的是json模式验证器的java版本,版本是2.2.5。

我的模式是:

{
"$schema": "http://json-schema.org/draftv4/hyper-schema#",
"title": "User object",
"description": "A user representation",
"type": "object",
"properties": {
    "email": {
        "description": "The user's email address",
        "format":"email",
        "maxLength": 255
    },
    "picture": {
        "description": "The user's picture",
        "type": "string",
        "media": {
            "binaryEncoding": "base64",
            "type": "image/png"
        }
    }
}
}

我的 json 对象是:

{"email":"k@w.de",
"picture":null}

现在,当我将模式加载到JsonSchemaFactory并打算开始验证时,我得到以下警告:

warning: the following keywords are unknown and will be ignored: [media]
level: "warning"
schema: {"loadingURI":"#","pointer":"/properties/picture"}
domain: "syntax"
ignored: ["media"]

除了$Schema字段之外,还有什么要配置以使用超模式的吗?

共有1个答案

卫景明
2023-03-14

这是因为你的$模式是错误的!

应该是http://json-schema.org/draft-04/hyper-schema#。有关已知URI的列表,请参阅核心规范的第6节。

 类似资料:
  • 我有一个样本JSON文件,我还想出了一个模式来评估上述文件使用以下JSON文件: 我仍然不确定如何编写架构文件。在我的示例文件中,应用程序和引入标记都应出现一次,但引入中的文件引入映射可以出现一次或多次。 我编写了一些java代码来根据提供的JSON模式文件评估我的JSON文件(第一个文件)。 但我得到的异常如下:线程“main”中的异常 有在图书馆以上工作经验的人能回答我这方面的问题吗?

  • 我试图使用另一个JSON模式来验证JSON模式。 要验证的JSON模式示例:https://jsonschema.net/home 验证上述模式的验证模式参考:https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-draft-07.json 从上面的中,如果我删除,我的JSON将变得无效。 我有什么方法可以定义根

  • 据我所知,有一些方法可以根据RDF模式验证序列化的RDF(例如RDF/XML)(如何用您的RDF模式验证RDF)。还有,从RDF/XML到JSON-LD序列化格式的各种转换器(反之亦然)。在Internet上搜索,我找不到一种直接的方法来验证JSON-LD与某种JSON模式的关系,就像RDF模式与RDF(/XML)的关系一样。当然,有各种各样的JSON-LD文档表单,所以我假设一个模式不能很容易地

  • 我对根据JSON模式验证JSON文档不感兴趣。我想验证JSON模式本身,检查它是否针对特定草案有效。是否有工具Java可以验证模式本身?

  • 我有一个用例,我将把一个json-schema作为输入,验证它,然后保存在我的系统中。稍后,我将获取json数据,我需要使用上面提到的json-schema来验证这些数据。给定这个场景,我需要执行两个级别的验证: 我使用的是json-schema-validator jar,只能找到第二级验证,在文档中找不到json-schema验证。例如:假设我们有以下示例json-schema:

  • 我在验证JSON时遇到了一些错误。我无法理解这些错误,有人能帮我解释一下吗。 } 这是json。 消息:JSON与“anyOf”中的任何模式都不匹配。架构路径: 消息:无效类型。应为数组,但得到的是字符串。架构路径: 消息:值“标识”载体“未在枚举中定义。架构路径: 消息:字符串“uui # abb 0 ef 56-8562-4056-aa62-AFB 758 a 150 ad”未根据格式“uri