Saltar para o conteúdo principal
Versão: Próximo

JSON Validate

JSON Validate ( vJson ; vSchema ) : Object

ParâmetroTipoDescrição
vJsonObjectobjeto JSON a validar
vSchemaObjectSchema JSON usada para validar objetos JSON
ResultadoObjectEstado da validação e erros (se houver)

Descrição

O comando JSON Validate verifica a conformidade do conteúdo JSON vJson com as regras definidas no esquema JSON vSchema. Se o JSON não for válido, o comando devolve uma descrição detalhada dos erros.

Passe em vJson um objeto JSON que contenha o conteúdo JSON a validar.

Nota: a validação de uma string JSON consiste em comprovar que segue as regras definidas em um esquema JSON. Isto é diferente de comprovar que o JSON esteja bem formado, o que faz o comando JSON Parse.

Passe em vSchema o esquema JSON a utilizar para a validação. Para maior informação sobre como criar um esquema JSON, pode consultar o website json-schema.org.

Nota: para validar um objeto JSON, 4D utiliza a norma descrita no documento JSON Schema Validation (este rascunho ainda está sendo escrito e pode evoluir no futuro).

Se o esquema JSON não for válido, 4D devolve um objeto Null e lança um erro que pode ser detectado mediante um método de chamada de erro.

JSON Validate devolve um objeto que oferece o estado da validação. Este objeto pode conter as seguintes propriedades:

Nome de propriedadeTipoDescrição
successBooleanoTrue se vJson for validado, false em caso contrário. Se for false, a propriedade errors também é devolvida
errorsColeção de objetosLista de objetos de erro em caso de vJson não estar validado (ver abaixo)

Cada objeto de erro da coleção errors contém as propriedades abaixo:

Nome de propriedadeTipoDescrição
codeNúmeroCódigo de erro
jsonPathTextRota JSON que não pode ser validada em vJson
lineNúmeroNúmero de linha de erro no arquivo JSON. Esta propriedade é preenchida se o JSON tiver sido analisado por JSON Parse com o parâmetro *. Do contrario, a propriedad é omitida.
messageTextMensagem de erro
offsetNúmeroDeslocamento de linha de erro no arquivo JSON. Esta propriedade é preenchida se o JSON tiver sido analisado por JSON Parse com o parâmetro *. Do contrário, a propriedade é omitida.
schemaPathsTextRota JSON no esquema que causa o erro de validação
Gestão de erros

Os erros abaixo podem ser retornados

CodeJSON Palavra chaveMensagem
2multipleOfErro enquanto validando contra uma chave 'multipleOf'.
3maximumO valor ofereico não deve ser maior que o especificado no schema ("{s1}").
4exclusiveMaximumO valor ofereico não deve ser menor que o especificado no schema ("{s1}").
5minimumO valor oferecido não deve ser menor que o especificado no schema ("{s1}").
6exclusiveMinimumO valor oferecido deve ser maior que especificado no schema ("{s1}").
7maxLengthO string é mais longo que o especificado no schema.
8minLengthO string é mais curto que o especificado no schema.
9patternA string "{s1}" não combina com o padrão no schema:{s2}.
10additionalItemsErro durante a validação do array. JSON contém mais elementos que os especificados no schema.
11maxItemsO array contém mais itens que os especificados no schema.
12minItemsO array contém menos itens que os especificados no schema.
13uniqueItemsErro ao validar um array. Elementos não são únicos. Outra instância de "{s1}" já está no array.
14maxPropertiesO número de propriedades é maior que o especificado no schema.
15minPropertiesO número de propriedades é maior que o especificado no schema.
16requiredA propriedade exigida "{s1}" está faltando.
17additionalPropertiesNenhuma propriedade adicional é permitida pelo schema. As propriedades {s1} devem ser removidas.
18dependenciesA propriedade "{s1}" exige a propriedade "{s2}".
19enumErro ao validar contra chave 'enum' "{s1}" não combina com nenhum elemento enum no schema.
20typeTipo incorreto. Valor esperado é: {s1}
21oneOfO JSON combina com mais de um valor.
22oneOfO JSON não combina com nenhum valor.
23notO JSON é válido contra o valor de 'not'.
24format.A string não combina ("{s1}")

Exemplo

Se quiser validar um objeto JSON com um esquema e obter a lista de erros de validação, se houver. Deseja armazenar linhas de erro e mensagens em uma variável de texto:

 var $oResult : Object
 $oResult:=JSON Validate(JSON Parse(myJson;*);mySchema)
 If($oResult.success) //validação exitosa
    ...
 Else //Validação falhou
    var $vLNbErr : Integer
    var $vTerrLine : Text
    $vLNbErr:=$oResult.errors.length ///obter o número de erros
    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 exemplo exige que a notação de objeto esteja ativada (ver o parágrafo Página Compatibilidade).

Ver também

JSON Parse

Propriedades

Número do comando1456
Thread-seguro