Altova XMLSpy 2024 Enterprise Edition 

Selectores de tipo (cualquiera, múltiple, etc.)

Inicio Anterior Inicio Siguiente

En la lista desplegable de los cuadros combinados Tipo de la vista Esquema JSON aparecen cuatro tipos que no son tipos JSON: cualquiera, múltiple, libre y prohibido. Estos tipos son en realidad selectores de tipo.

 

El selector de tipo cualquiera selecciona cualquier tipo JSON. Esto significa que en esa instancia cualquier tipo JSON es válido para una definición con ese nombre.

El selector de tipo múltiple selecciona uno o varios tipos JSON. Esto significa que si el tipo de instancia es uno de los tipos JSON seleccionados en el esquema, entonces el tipo de la instancia será válido para la definición.

El selector de tipo libre (nuevo en draft-06) no aplica ninguna restricción al tipo JSON. Esto significa que en esa instancia cualquier tipo JSON es válido para una definición con ese nombre.

El selector de tipo prohibido (nuevo en draft-06) prohíbe cualquier tipo JSON, de manera que no puede existir ninguna definición con ese nombre.

 

El selector de tipo cualquiera

El selector de tipo cualquiera se puede seleccionar siempre que se pueda seleccionar un tipo. Cuando se añade una definición al esquema, el tipo predeterminado es cualquiera. Esto especifica que cualquier tipo JSON es válido y que el tipo de la instancia puede ser un objeto, una matriz o cualquier tipo atómico (string, number, integer, boolean y null).

JSONAny01

Por ejemplo, el subesquema de la imagen anterior tiene el tipo cualquiera. Es decir, todos los tipos JSON son válidos para esta definición. Además observe que:

 

Como se permiten objetos, en la vista se crea automáticamente un recuadro de propiedades. El recuadro de propiedades se define por defecto para permitir un número cualquiera de propiedades de cualquier tipo (por medio de un comodín de propiedad cuyo tipo es cualquiera). Las definiciones de propiedades se pueden definir según corresponda.

Como se permiten matrices, en la vista se crea automáticamente un recuadro de elementos. El recuadro de elementos de matriz se define por defecto para permitir un número cualquiera de elementos de matriz de cualquier tipo (por medio de un comodín de elemento de matriz cuyo tipo es cualquiera). Las definiciones de los elementos se pueden modificar según corresponda.

Como se permiten tipos de cadena de texto y numéricos (números y enteros), puede definir restricciones para estos tipos atómicos en el ayudante de entrada Restricciones.

 

Por tanto, todos estos tipos se definen de forma implícita con el selector de tipos cualquiera. Seleccione otro tipo si desea cambiar de tipo. También puede especificar como tipo un objeto o una matriz concretos: haga clic con el botón derecho en el objeto o en la matriz y seleccione el comando Convertir en explícito. Esto convierte el tipo en el tipo seleccionado y quita los demás tipos o los hace inactivos.

 

El selector de tipo múltiple

El selector de tipo múltiple se puede seleccionar siempre que se pueda seleccionar un tipo. Permite seleccionar uno o varios tipos JSON con solo marcar una casilla (imagen siguiente). Después se pueden especificar sus restricciones en el ayudante de entrada Restricciones.

JSONMultiple01

Por ejemplo, el subesquema de la imagen anterior permite tipos string, null y array. Puede definir restricciones para estos tipos en el ayudante de entrada Restricciones.

 

Las restricciones de cadenas de texto se definen en el ayudante de entrada Restricciones.

El tipo null no toma restricciones.

Se crea automáticamente un recuadro de elementos de matriz. Aquí puede definir el número y los tipos de elementos de matriz.

 

En un documento de instancia los tipos seleccionados se permitirán en la posición correspondiente a la del subesquema.

 

Los selectores de tipo libre y prohibido

Los selectores de tipo libre y prohibido se pueden seleccionar en cualquier sitio en el que se pueda seleccionar un tipo y permiten indicar, respectivamente, que los objetos de un tipo cualquiera están permitidos o prohibidos.

JSONUnconstrainedForbidden

En la imagen anterior vemos que la definición tiene dos propiedades. PropertyOne puede tener un valor de cualquier tipo, mientras que una propiedad con el nombre PropertyTwo no está permitida. En forma de código la imagen anterior tendría este aspecto:

 

"Definition": {

 "properties": {

         "PropertyOne": true,

         "PropertyTwo": false

 }

}

 

 

© 2017-2023 Altova GmbH