Usina BRAdvPL Guia
Entrar
← Todos os tópicos
FUNçãOEm revisão

framework.types.json.Compare

framework.types.json.Compare( jJsonObject1, jJsonObject2, [@cRet] ) --> lRet

Compara objetos JSON por propriedades e valores.

framework.types.json.CompareAdvPL
01 · VISÃO GERAL

Visão geral

A função evita comparar apenas a serialização textual dos objetos. A ficha descreve comparação sem depender da ordem de propriedades ou arrays e diferencia nomes de propriedades por maiúsculas/minúsculas; se a ordem de um array fizer parte do contrato, não presumir igualdade estrita por posição. Exige LIB 20211004 ou superior e binário com suporte a TLPP. Os dois argumentos devem ter o mesmo tipo, JSON/JSON ou Array/Array, com ressalvas documentadas para arrays JSON na raiz. O exemplo usa somente objetos simples com propriedades reordenadas. code e qty são chaves fixas do contrato didático, preservadas nos idiomas. (TOTVS, s.d., ref. 1)

02 · SINTAXE

Sintaxe

framework.types.json.Compare( jJsonObject1, jJsonObject2, [@cRet] ) --> lRet

Parâmetros

jJsonObject1
JSON / ArrayObrigatório

Base da comparação.

jJsonObject2
JSON / ArrayObrigatório

Objeto/array do mesmo tipo da base.

cRet
CaractereOpcional

Diagnóstico passado por referência.

Retorno

Lógico da comparação; cRet pode receber diagnóstico por referência.

03 · EXEMPLO PRÁTICO

Exemplo comentado

#Include "Protheus.ch"

User Function Ed392()
    Local jBase := JsonObject():New()
    Local jComparado := JsonObject():New()
    Local cDiferencas := ""
    // JSONs fixos validos; apenas a ordem das propriedades difere.
    jBase:FromJson('{"code":"A","qty":2}')
    jComparado:FromJson('{"qty":2,"code":"A"}')
    ConOut(cValToChar(framework.types.json.Compare(jBase,jComparado,@cDiferencas)))
    FreeObj(jBase)
    FreeObj(jComparado)
Return Nil
Resultado esperado

Verdadeiro no ambiente compatível; ordem das propriedades não muda esse conteúdo. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

BOAS PRÁTICAS
  • Validar parse de entradas externas e interpretar diagnóstico. Comparação não valida regra de negócio nem autenticidade dos dados.
  • Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. framework.types.json.Compare. TDN. Consulta em 2026-10-26.
Situação
Em revisão
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR
0 comentário(s) aprovado(s)

Comentários

Ainda não há comentários aprovados.

Entre com Google ou Microsoft para comentar.

Powered by Usina Docs · Alpha