es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Esquema de JSON de dependencias anidadas.

Quiero renderizar condicionalmente un campo de entrada dependiendo de si una casilla de verificación está marcada.

Esta casilla de verificación está anidada y no sé cómo acceder a ella.

Lo he logrado hacer funcionar así:
json
{
“type”: “object”,
“properties”: {
“firstName”: {
“type”: “boolean”
}
},
“dependencies”: {
“firstName”: {
“oneOf”: [
{
“properties”: {
“firstName”: {
“enum”: [true]
},
“lastName”: {
“type”: “string”
}
}
}
]
}
}
}

ejemplo aquí

¿Qué pasa si la dependencia está anidada de esta manera?:
json
{
“type”: “object”,
“properties”: {
“test”: {
“type”: “object”,
“properties”: {
“enabled”: {
“type”: “boolean”
}
}
}
},
“dependencies”: {
“test”: {
“enabled”: {
“oneOf”: [
{
“properties”: {
“enabled”: {
“enum”: [true]
},
“lastName”: {
“type”: “string”
}
}
}
]
}
}
}
}

como puedes ver: he intentado acceder a ella pero no se reconoce correctamente.
¿Cómo abordaría este problema? ¿Es esto incluso posible?

El validador JSON Scheme dice que es válido.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Puede acceder a la casilla de verificación anidada utilizando la propiedad “dependencies”. Por ejemplo, si desea renderizar condicionalmente un campo de entrada dependiendo de si la casilla de verificación “enabled” está marcada, puede usar el siguiente código:

    {
      "type": "object",
      "properties": {
        "test": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean"
            }
          }
        }
      },
      "dependencies": {
        "test": {
          "enabled": {
            "oneOf": [
              {
                "properties": {
                  "enabled": {
                    "enum": [true]
                  },
                  "lastName": {
                    "type": "string"
                  }
                }
              }
            ]
          }
        }
      }
    }
    

    Puede ver un ejemplo de esto aquí

Comments are closed.