Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v20 R7
JSON Validate

JSON Validate 


 

JSON Validate ( vJson ; vSchema ) -> Resultado 
Parâmetro Tipo   Descrição
vJson  Objeto in objeto JSON a validar
vSchema  Objeto in Schema JSON usada para validar objetos JSON
Resultado  Objeto in Estado da validação e erros (se houver)

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
jsonPathStringRota 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.
messageStringMensagem 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.
schemaPathsStringRota JSON no esquema que causa o erro de validação

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:

 C_OBJECT($oResult)
 $oResult:=JSON Validate(JSON Parse(myJson;*);mySchema)
 If($oResult.success) //validação exitosa
    ...
 Else //Validação falhou
    C_LONGINT($vLNbErr)
    C_TEXT($vTerrLine)
    $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 

How to create a JSON schema
JSON Parse
JSON schema validation keywords on json-schema.org

 
PROPRIEDADES 

Produto: 4D
Tema: JSON
Número 1456

This command can be run in preemptive processes

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

Criado por: 4D v16 R4

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v20 R7)