You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Camel JSON Schema Validator使用JSON Draft 07及解决schemaLoader报错

Camel JSON Schema Validator 切换Draft 07及报错修复方案

错误根因

JsonSchemaException: Validation: null is an invalid segment for URI 报错的核心原因是自定义JsonSchemaLoader初始化时未配置schema资源的基准URI,导致schema引用解析阶段出现空URI段。

正确实现步骤

  • 第一步:实现支持Draft 07的自定义JsonSchemaLoader
import org.apache.camel.component.jsonvalidator.JsonSchemaLoader;
import com.networknt.schema.JsonSchema;
import com.networknt.schema.JsonSchemaFactory;
import com.networknt.schema.SpecVersion;
import com.networknt.schema.SchemaValidatorsConfig;
import java.io.InputStream;
import java.net.URI;

public class Draft07JsonSchemaLoader implements JsonSchemaLoader {
    @Override
    public JsonSchema loadSchema(InputStream inputStream, String resourceUri, SchemaValidatorsConfig config) throws Exception {
        // 指定Draft 07版本的schema工厂
        JsonSchemaFactory factory = JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V7);
        // 显式设置基准URI,避免空段错误
        URI baseUri = URI.create(resourceUri.startsWith("classpath:") ? 
            resourceUri.replace("classpath:", "resource:classpath/") : resourceUri);
        return factory.getSchema(baseUri, inputStream, config);
    }
}
  • 第二步:注册自定义Loader到Camel上下文
    SpringBoot环境直接将Loader注册为Bean即可,Camel会自动扫描注入:
@Bean
public JsonSchemaLoader draft07JsonSchemaLoader() {
    return new Draft07JsonSchemaLoader();
}

纯Camel环境手动绑定到组件:

JsonValidatorComponent validatorComponent = context.getComponent("json-validator", JsonValidatorComponent.class);
validatorComponent.setSchemaLoader(new Draft07JsonSchemaLoader());
  • 第三步:路由中正常使用JSON校验组件即可
from("direct:validateJson")
    .to("json-validator:schemas/your-schema.json")
    .to("log:validateSuccess");

注意事项

  • 不要修改JsonSchemaFactory默认的URI解析逻辑,否则会导致$ref引用解析失效
  • 自定义Loader中必须传入resourceUri对应的基准URI,不能仅传入InputStream加载schema,否则会触发空URI段报错

内容的提问来源于stack exchange,提问作者Midovsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:06:06