Saltar al contenido principal
Versión: 20 R7 BETA

JSON Validate

JSON Validate ( vJson ; vSchema ) : Object

ParámetroTipoDescripción
vJsonObjectObjeto JSON a validar
vSchemaObjectEsquema JSON utilizado para validar objetos JSON
ResultadoObjectEstado de validación y errores (si los hay)

Descripción

El comando JSON Validate verifica la conformidad del contenido JSON vJson con las reglas definidas en el esquema JSON vSchema. Si el JSON no es válido, el comando devuelve una descripción detallada de los errores.

Pase en vJson un objeto JSON que contiene el contenido JSON a validar.

Nota: la validación de una cadena JSON consiste en comprobar que sigue las reglas definidas en un esquema JSON. Esto es diferente a comprobar que el JSON está bien formado, lo cual hace el comando JSON Parse.

Pase en vSchema el esquema JSON a utilizar para la validación. Para mayor información sobre cómo crear un esquema JSON, puede consultar el sitio web json-schema.org.

Nota: para validar un objeto JSON, 4D utiliza la norma descrita en el documento JSON Schema Validation (este borrador aún se está escribiendo y puede evolucionar en el futuro). La implementación de 4D se basa en la versión 4 de este documento.

Si el esquema JSON no es válido, 4D devuelve un objeto Null y genera un error que puede detectarse por un método de llamada de error.

JSON Validate devuelve un objeto que ofrece el estado de la validación. Este objeto puede contener las siguientes propiedades:

Nombre de propiedadTipoDescripción
successBooleanoTrue si vJson está validado, false en caso contrario. Si es false, la propiedad errors también se devuelve
errorsColección de objetosLista de objetos de error en caso de que vJson no esté validado (ver abajo)

Cada objeto de error de la colección errors contiene las siguientes propiedades:

Nombre de propiedadTipoDescripción
codeNúmeroCódigo de error
jsonPathCadenaRuta JSON que no se puede validar en vJson
lineNúmeroNúmero de línea del error en el archivo JSON. Esta propiedad se llena si el JSON ha sido analizado por JSON Parse con el parámetro *. De lo contrario, la propiedad se omite.
messageCadenaMensaje de error
offsetNúmeroDesplazamiento de línea del error en el archivo JSON. Esta propiedad se llena si el JSON ha sido analizado por JSON Parse con el parámetro *. De lo contrario, la propiedad se omite.
schemaPathsCadenaRuta JSON en el esquema que causa el error de validación
Gestión de errores

Se pueden devolver los siguientes errores:

CódigoPalabra clave JSONMensaje[#table]
2multipleOfError al validar contra la llave'multipleOf'.
3maximumEl valor dado no debe ser mayor que el especificado en el esquema ("{s1}").
4exclusiveMaximumEl valor dado debe ser menor que el especificado en el esquema ("{s1}").
5minimumEl valor dado no debe ser menor que el especificado en el esquema ("{s1}").
6exclusiveMinimumEl valor dado debe ser mayor que el especificado en el esquema ("{s1}").
7maxLengthLa cadena es más larga que la especificada en el esquema.
8minLengthLa cadena es más corta que la especificada en el esquema.
9patternLa cadena "{s1}" no coincide con el patrón del esquema: {s2}.
10additionalItemsError al validar un array. JSON contiene más elementos que los especificados en el esquema.
11maxItemsEl array contiene más elementos que los especificados en el esquema.
12minItemsEl array contiene menos elementos que los especificados en el esquema.
13uniqueItemsError al validar un array. Los elementos no son únicos. Otra instancia de "{s1}" ya está en el array.
14maxPropertiesEl número de propiedades es mayor que el especificado en el esquema.
15minPropertiesEl número de propiedades es menor que el especificado en el esquema.
16requiredFalta la propiedad requerida "{s1}".
17additionalPropertiesNo hay propiedades adicionales permitidas por el esquema. La(s) propiedad(es) {s1} debe(n) ser eliminada(s).
18dependenciesLa propiedad "{s1}" requiere la propiedad "{s2}".
19enumError al validar contra la llave 'enum'. "{s1}" no coincide con ningún elemento enum del esquema.
20typeTipo incorrecto. El tipo esperado es: {s1}
21oneOfEl JSON coincide con más de un valor.
22oneOfEl JSON no coincide con ningún valor.
23notEl JSON es válido contra el valor de 'not'.
24format.La cadena no coincide ("{s1}")

Ejemplo

Usted desea validar un objeto JSON con un esquema y obtener la lista de errores de validación, si los hay, y guardar líneas de error y mensajes en una variable texto:

 var $oResult : Object
 $oResult:=JSON Validate(JSON Parse(myJson;*);mySchema)
 If($oResult.success) //validación exitosa
    ...
 Else //Validación fallida
    var $vLNbErr : Integer
    var $vTerrLine : Text
    $vLNbErr:=$oResult.errors.length ///obtener el número de error(es)
    ALERT(String($vLNbErr)+" validation error(s) found.")
    For($i;0;$vLNbErr)
       $vTerrLine:=$vTerrLine+$oResult.errors[$i].message+" "+String($oResult.errors[$i].line)+Carriage return
    End for
 End if

Nota: este ejemplo requiere que la notación de objeto esté activada (ver el párrafo Página Compatibilidad).

Ver también

JSON Parse