Json模式仅验证数组中的第一个元素

时间:2019-04-24 15:36:47

标签: json

我有一个json模式,它有一个数组,我想验证数组中的所有项目,但是该模式只验证第一个元素,为什么该模式不验证其余元素?

架构:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "codigoEmpresa": {
      "type": "string"
    },
    "nombreEmpresa": {
      "type": "string"
    },
    "planes": {
      "type": "array",
      "items": [
        {
          "type": "object",
          "properties": {
            "codigoPlan": {
              "type": "string"
             },
             "nombrePlan": {
               "type": "string"
             },
             "tipoProducto": {
               "type": "integer"
             }
          },
         "required": [
           "codigoPlan",
           "nombrePlan",
           "tipoProducto"
          ]
        }
      ]
    }
  },
  "required": [
    "codigoEmpresa",
    "nombreEmpresa",
    "planes"
   ]
 }

无效的json:

{
   "codigoEmpresa":"204",
   "nombreEmpresa":"Claro",
   "planes":[
      {
         "codigoPlan":"M-PP-Premium-30.03",
         "nombrePlan":"Plan Max Premium Libre",
         "tipoProducto":1
      },
      {
         "tipoProducto":3
      }
   ]
}

模式验证器:

https://json-schema-validator.herokuapp.com/

json中需要数组第二个元素中的nombrePlan和tipoProducto属性,但是模式验证器不会对其进行验证。

1 个答案:

答案 0 :(得分:1)

"items": [ { ... } ]
模式中的

应该是

"items": { ... }
这种形式的

items关键字会将单个子模式应用于数组中找到的所有元素。