【问题标题】:JsonSchema and validationJsonSchema 和验证
【发布时间】:2022-01-04 19:54:47
【问题描述】:

同事们!我正在尝试使用 jsonSchema 验证输入对象(Json 作为字符串)。但我对下一条消息有疑问:com.networknt.schema.JsonSchemaException: java.lang.UnsupportedOperationException: No proper validator for id。

我的架构是这样的:

    ```
{
      "type" : "object",
      "id" : "urn:jsonschema:x:x:x:x:x:x:x:x:Class_name",
      "properties" : {
    ///objects 
      }
    }
```

以及尝试验证的代码:

JsonSchemaFactory factory = JsonSchemaFactory.getInstance(VersionFlag.V201909);
        InputStream stream=TestClass.class.getResourceAsStream("/file.json");
        JsonSchema schema=factory.getSchema(stream);
        JsonNode node =mapper.convertToJsonNode(MyObject.builder().build());
        Set<ValidationMessage> validationResult = schema.validate(node);

我的目标:如果字段输入不正确,则将所有这些字段的列表输出到响应中。请告诉我我做错了什么,还有其他选项可以验证所有 json 键(不是值)吗?

当前库:

<dependency>
            <groupId>com.networknt</groupId>
            <artifactId>json-schema-validator</artifactId>
            <version>1.0.63</version>
        </dependency>

谢谢!

【问题讨论】:

  • 我没有使用 JSON 模式的经验,但快速浏览一下 JSON 元模式规范似乎表明没有 "id": 验证关键字。这在我看来错位了,它属于 "properties": ( ... ) 吗?
  • 你好,吉姆!不,这是关于第一个 id ("id" : "urn:jsonschema:x:x:x:x:x:x:x:x:Class_name") 。我现在已经删除了,没有出现错误

标签: java json validation jsonschema json-schema-validator


【解决方案1】:

Jim 走在了正确的轨道上。

对于 2019-09 草案(您看到使用的是 JsonSchemaFactory.getInstance(VersionFlag.V201909)),id 应该是 $id。

此更改是从草案 6 开始的(之前的两个版本)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2018-04-09
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多