Olá,
É necessário acessar a propriedade endereco
antes, como ela é um json, você pode utilizar o método HasProperty
após acessá-la, algo assim:
jJson["endereco"]:hasProperty("uf")
Exemplos:
//-------------------------------------------------------------------
/*/{Protheus.doc} u_jsonProperty
Exemplo de verificação de propriedade
@author Daniel Mendes
@since Dec 04, 2023
@version 1.0
/*/
//-------------------------------------------------------------------
function u_jsonProperty()
local cJson as character
local jJson as json
local lHasUF as logical
begincontent var cJson
{
"nome": "TESTE INTEGRACAO ESL",
"endereco" : {
"uf" : "PR",
"cep" : "82315000",
"logradouro" : "Rua Angelo Massignan",
"numero" : "884",
"complemento" : "Ap 33, bloco 6",
"bairro" : "São Braz"
}
}
endcontent
jJson := JsonObject():new()
jJson:fromJson(cJson)
//Com tripla validação, verificando o endereco, tipo do mesmo e após isso, o uf
lHasUF := jJson:hasProperty("endereco") .and. ValType(jJson["endereco"]) == "J" .and. jJson["endereco"]:hasProperty("uf")
ConOut("Existe a propriedade uf dentro da propriedade endereco?", lHasUF)
//Se você possuir certeza da existência do endereço, pode apenas validar a uf:
lHasUF := jJson["endereco"]:hasProperty("uf")
ConOut("Existe a propriedade uf dentro da propriedade endereco?", lHasUF)
//Como ao acessar uma propriedade que não existe, o json retorna nil, é possível apenas fazer o ValType de forma direta:
lHasUF := ValType(jJson["endereco"]) == "J" .and. jJson["endereco"]:hasProperty("uf")
ConOut("Existe a propriedade uf dentro da propriedade endereco?", lHasUF)
return
Documentação: https://tdn.totvs.com/display/tec/Classe+JsonObject