Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Obs.: A classe JsonObject diferencia propriedades com nome maiúsculo das minúsculas. Por isso uma comparação entre JSONs com diferença de caixa irá resultar em diferenças pela função.


Parâmetros

NomeTipoDescriçãoDefaultObrigatório
jJsonObject1JSON/Array

JSON base da comparação


Sim

jJsonObject2JSON/Array

JSON a ser comparado


Sim
cRetCaractere

Variável de referência das mensagens de erros

NilNão

Obs.: A função aceita como argumentos arrays do tipo JSON. Os dois primeiros argumentos devem ter o mesmo tipo de variável (JSON & JSON ou Array & Array).

...

lRet JSONs iguais ou não.


Observações

  • Por conta de um comportamento padrão da JsonObject, não recomendamos utilizar JSON array (ex.: [{}, {}]), somente JSON object (ex.: { "a": {}, "b": [] });
  • Disponível à partir da LIB versão 20210517 ou superior.



Bloco de código
languagejs
themeMidnight
titleExemplo FwJsonCompare
linenumberstrue
#Include "protheus.ch"

User Function MyJsonCompare()
	Local lRet As Logical
	Local cRet As Character
	Local cJsonOne As Character
	Local cJsonTwo As Character
	Local oJson1 := JsonObject():New()
	Local oJson2 := JsonObject():New()

	cJsonOne := '{"propriedade": "valor","array":[{"valor1": true},{"valor2": true}]}'
	cJsonTwo := '{"propriedade": "valor","array":[{"valor1": true},{"valor2": false}]}'

	oJson1:FromJson(cJsonOne)
	oJson2:FromJson(cJsonTwo)

	lRet := FwJsonCompare(oJson1, oJson2, @cRet)

	If !lRet
		ConOut(cRet) // Resultado: array[2]=> Item at position 2 of aArray1 not found in aArray2.
	EndIf

	FreeObj(oJson1)
	FreeObj(oJson2)

Return Nil