首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Camel json验证器对json草案07的支持

Camel json验证器对json草案07的支持
EN

Stack Overflow用户
提问于 2020-06-12 00:38:07
回答 2查看 667关注 0票数 2

我们使用Apache Camel Java DSL和json-validator组件来根据json模式验证json请求。根据camel文档,当前的camel版本是2.22.0,它使用NetworkNT JSON schema库支持JSON Schema v4、v6、v7和v2019-09。然而,当我尝试JSON schema draft 07时,我在运行测试时得到了一个错误,"Caused by: com.networknt.schema.JsonSchemaException: Unknown Metaschema:http://json-schema.org/draft-07/schema#“。

当我恢复到json模式草案04时,它工作得很好。

你有什么办法让它工作起来吗?

EN

回答 2

Stack Overflow用户

发布于 2020-08-15 01:14:07

默认草案是第4个草案,但是您可以通过定义一个bean来覆盖模式验证器(JsonSchemaLoader)。

代码语言:javascript
复制
@Bean(name = "mySchemaLoader")
  public JsonSchemaLoader mySchemaLoader() {
    return (camelContext, schemaStream) -> JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V7)
        .getSchema(schemaStream);
  }

这样,如果您想覆盖缺省配置,我们只需创建一个bean,它将返回一个V7模式验证器

..。

代码语言:javascript
复制
   ObjectMapper mapper = new ObjectMapper();
    JsonSchemaFactory validatorFactory =   JsonSchemaFactory.builder(JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V7)).objectMapper(mapper).build();

……

有了这个bean,您只需告诉camel,您将通过query param使用该bean

代码语言:javascript
复制
public void configureRemote() throws Exception {

    from("direct:getPrescripciones")
        .recipientList(
            simple"${header.url}?bridgeEndpoint=true"))
        .to("json-validator:deliveryReport.schema.json?schemaLoader=#bean:mySchemaLoader")
        .end();
  }

这就是我使用的所有依赖项

代码语言:javascript
复制
<properties>
    <java.version>1.8</java.version>
    <camel.version>3.4.0</camel.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.apache.camel.springboot</groupId>
        <artifactId>camel-json-validator-starter</artifactId>
        <version>${camel.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-jackson</artifactId>
        <version>${camel.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-http</artifactId>
        <version>${camel.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-jolt</artifactId>
        <version>${camel.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel.springboot</groupId>
        <artifactId>camel-servlet-starter</artifactId>
        <version>${camel.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel.springboot</groupId>
        <artifactId>camel-swagger-java-starter</artifactId>
        <version>${camel.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel.springboot</groupId>
        <artifactId>camel-google-pubsub-starter</artifactId>
        <version>${camel.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-google-pubsub</artifactId>
        <version>${camel.version}</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>
票数 0
EN

Stack Overflow用户

发布于 2020-06-25 21:36:22

支持v7的camel版本为3.4.0

您要查找的文档在2.x上,在这种情况下,正确地指出只支持v4:https://camel.apache.org/components/2.x/json-validator-component.html

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62329208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档