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

使用com.github.fge.jsonschema校验JSON时遇InvalidSchemaException问题排查

问题根源与解决方案

这个问题的核心在于你使用的json-schema-validator版本(2.2.10)对JSON Schema Draft-07的支持存在局限性,具体是对required关键字的校验逻辑不符合Draft-07规范。

为什么会报错?

JSON Schema Draft-07明确允许required字段设为空数组(表示没有必填属性),但你用的旧版fge库有个强制要求:如果Schema中出现required关键字,对应的数组必须至少包含一个元素。这就是错误日志里提示"array must have at least one element"的原因。而在线校验器一般采用最新的规范实现,所以能正常识别空数组的required。

两种解决办法

1. 移除空的required字段(最简单直接)

既然你没有需要强制必填的属性,直接删掉Schema中的"required": []这一行即可。修改后的Schema如下:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Team data",
  "description": "Validation schema",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 255,
      "description": "Name"
    }
  }
}

这样修改后,旧版库就能正常校验你的JSON内容{"name" : "name"}了。

2. 升级库版本(保留required空数组写法)

如果你需要保留required: []的写法来明确表示无必填属性,可以尝试升级fge的json-schema-validator到更晚的版本(注意该库已停止维护,最新稳定版是2.2.14)。不过需要测试新版本是否完全支持Draft-07的这个特性。如果升级后仍有问题,考虑替换为更活跃的JSON Schema校验库,比如org.everit.json.schema或com.networknt/json-schema-validator,它们对最新规范的支持更完善。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:09:49