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

JSON Schema验证失效:含actions数组的views数据验证无报错

Troubleshooting Your JSON Schema Validation Issue

Let’s walk through the most common reasons your schema isn’t catching changes to those required fields, and how to fix them:

1. Your Schema Isn’t Properly Targeting the views[*].actions Hierarchy

Since actions lives inside elements of the views array, your root validation setup might not be correctly linking schema1.json to that nested path. If you’re only validating schema1.json in isolation (instead of embedding it into a root schema that describes the full response structure), the validator won’t check the actions objects within your views array.

For example, your root schema should look something like this to properly target nested actions:

{
  "type": "object",
  "properties": {
    "views": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "actions": { "$ref": "schema1.json" }
        }
      }
    }
  }
}

2. The required Array Is Misplaced in schema1.json

Double-check that required is defined directly in the top-level object of schema1.json, not nested under properties or elsewhere. A correct schema1.json should look like this:

{
  "type": "object",
  "required": ["type", "label", "localizedlabel"],
  "properties": {
    "type": { "type": "string" },
    "label": { "type": "string" },
    "localizedlabel": { "type": "string" }
  }
}

Typos like require (missing the final "d") or misplacing the array will break the required field validation entirely.

3. additionalProperties Isn’t Blocking Invalid Field Names

By default, JSON Schema allows extra properties not defined in your schema. If you’re renaming fields (e.g., label to labell) and not getting errors, add "additionalProperties": false to schema1.json. This tells the validator to reject any unrecognized keys, which will catch typos or intentional renames of your required fields.

4. Type Validation Rules Are Too Permissive

If changing a field’s value type (e.g., a string type to a number) isn’t triggering an error, verify your properties definitions in schema1.json:

  • Ensure you haven’t accidentally set a union type (like "type": ["string", "number"]) that accepts multiple value types.
  • Check for nullable: true or other loose constraints that might bypass type checks.

5. Your Validator Isn’t Applying Conditional Logic for Optional actions

Since actions is optional in views elements, make sure your root schema uses if/then to enforce validation only when actions exists:

{
  "type": "object",
  "properties": {
    "views": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "actions": { "$ref": "schema1.json" }
        },
        "if": { "properties": { "actions": { "type": "object" } } },
        "then": { "required": ["actions"] }
      }
    }
  }
}

This ensures that whenever an actions object is present, it must adhere to schema1.json’s rules.


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:19:14