Página 1 de 1

Erro HHash

Enviado: 16 Out 2021 08:51
por gilbertosilverio
Ola Amigos,

Neste codigo estou tentado pegar o elemento message,

Código: Selecionar todos


   IF oHttps:Status <> 200

      Arquivo_erro := HB_MEMOREAD( ArqXml )

      hb_JsonDecode( Arquivo_erro, @hRet_erro )    

      If Len(hRet_erro) != 0

         hwg_msginfo(str(Len(hRet_erro)))  // 1

         hwg_msginfo(valtoprg(hRet_erro))  // visualizar o todo o arquivo txt

         if HHasKey(hRet_erro,'message')
            E01 :=hRet_erro['message']
            xTE := 5000
            HWG_MSGTEMPO(E01, xTE)
         endif
      else
         HWG_MSGSTOP([Erro abertura JSON],[Erro do sistema])
      endif
   ELSE
      Hwg_msginfo([Status da remessa ]+ALLTRIM(vTXT01)+[ alterado para: ]+ALLTRIM(cSTATUS),[Aviso do sistema])
   ENDIF

so que da a msg de erro:

Código: Selecionar todos


Error BASE/1123  Erro nos parâmetros: HHASKEY
Called from ->HHASKEY(0)
Called from ->EDITAR_REMESSA(1294)
Called from ->EDITAR_SULAMERICA(1150)
Called from ->ALTERAR_REMESSA(1889)

Por favor, como consigo pegar o retorno "message " desse json, já tentei de tudo e não passa. Onde estou errando.

Alguma dica?

Grato.

Erro HHash

Enviado: 16 Out 2021 09:46
por JoséQuintas

Código: Selecionar todos

REQUEST HB_CODEPAGE_PTISO

procedure main()

   LOCAL cTxtJson := '[ { "errorCode":"APEX_ERROR", "message":"SystemDmlExcep" } ]'
   LOCAL aTest

   Set( _SET_CODEPAGE, "PTISO" )
   SetMode(40,100)
   CLS

   aTest := hb_JsonDecode( cTxtJson )
   ? aTest[ 1 ][ "errorCode" ]
   ? aTest[ 1 ][ "message" ]

   Inkey(0)

   RETURN
"[" indica array, como pode ver na visualização que você mesmo postou, começou no elemento ZERO, que no Harbour começa no 1.

Erro HHash

Enviado: 16 Out 2021 10:47
por gilbertosilverio
Ola Quintas,

Só funciona se tirar o hHaskey, por isso não conseguia...

Declarando direto funciona, ate hoje ainda me confundo com matriz...

Obrigado pela ajuda.