Página 1 de 1

Função ze_JsonDecode

Enviado: 12 Abr 2024 14:22
por malcarli
Estou tentando usar essa função para pegar os dados de um json retornado pelo banco siccob, Tentei tb hb_JsonDecode, mas ambas não retornaram as informações. A função ze_JsonDecode, inclusive dá erro e não consegui resolver. Vou anexar o retorno, caso algum colega consiga ver o que pode ter de errado ou uma forma de buscar as informações do json

Att.

Marcelo A. L. Carli
Marília/SP
Capital Nacional do Alimento ®

https://malc-informatica.ueniweb.com
http://marcelo.lx.com.br
Email / Skype: malcarli@life.com.br

Função ze_JsonDecode

Enviado: 12 Abr 2024 16:48
por JoséQuintas
malcarli escreveu:Tentei tb hb_JsonDecode, mas ambas não retornaram as informações. A função ze_JsonDecode, inclusive dá erro e não consegui resolver. Vou anexar o retorno, caso algum colega consiga ver o que pode ter de errado ou uma forma de buscar as informações do json
Não entendi.
Dá erro, ou não consegue pegar as informações ?

Função ze_JsonDecode

Enviado: 12 Abr 2024 16:57
por JoséQuintas
É a estrutura que precisa saber ?
json.png

Função ze_JsonDecode

Enviado: 12 Abr 2024 16:57
por malcarli
dá erro na função, se rodar vai ver a linha correta ok. Obg

Função ze_JsonDecode

Enviado: 12 Abr 2024 16:59
por JoséQuintas
malcarli escreveu:dá erro na função, se rodar vai ver a linha correta ok. Obg
Que função ?
Passou um txt.

Função ze_JsonDecode

Enviado: 12 Abr 2024 17:24
por JoséQuintas
Agora entendi.

ze_jsonDecode() foi um quebra-galho, porque xharbour não tinha função pra isso.
Foi só ajuda na época.
Agora xharbour tem sua própria função.

Função ze_JsonDecode

Enviado: 12 Abr 2024 17:54
por JoséQuintas

SYSTEM ERROR
Error BASE/1069 Argument error: array assign
Called from ZE_JSONDECODEVALUE(122)
Called from ZE_JSONDECODEVALUE(124)
Called from ZE_JSONDECODEVALUE(50)
Called from ZE_JSONDECODEVALUE(124)
Called from ZE_JSONDECODEVALUE(50)
Called from ZE_JSONDECODEVALUE(41)
Called from ZE_JSONDECODEVALUE(124)
Called from ZE_JSONDECODEVALUE(50)
Called from ZE_JSONDECODE(21)
Called from MAIN(11)
(1) = Tipo: C Valor: "tipoDesconto"

Código: Selecionar todos

         IF Left( cTxt, 1 ) == ":"
            Altd(2)
            xValue[ xValue2 ] := Nil
Na mensagem de erro mostra "tipoDesconto", que devia ser o elemento a ser acrescentado.
Tentei a única possibilidade do erro: xvalue não ser hash array

Código: Selecionar todos

         IF Left( cTxt, 1 ) == ":"
            IF ValType( xValue ) != "H"
               xValue := hb_Hash()
            ENDIF
            xValue[ xValue2 ] := Nil
À primeira vista deu certo.
Mas melhor usar a função do próprio xharbour agora que ele tem.

Nem lembrava mais desse fonte kkkk

Função ze_JsonDecode

Enviado: 12 Abr 2024 18:06
por JoséQuintas
teste.png
Não deu o mesmo resultado, deveria ser valor e não é.

Função ze_JsonDecode

Enviado: 12 Abr 2024 18:13
por JoséQuintas
erro2.png
erro2.png (9.81 KiB) Exibido 4801 vezes
Erro de principiante....

Código: Selecionar todos

   CASE Left( cTxt, 1 ) $ "-123456789"
Faltou aí o número ZERO.

A alteração anterior é errada, é só esta mesmo.
Ao invés de 1 a 9, é de 0 a 9.

Função ze_JsonDecode

Enviado: 14 Abr 2024 09:08
por JoséQuintas
Complemento:

Deu erro com zero inteiro, mas não daria erro em zero com decimais.
Talvez tenha sido a primeira situação assim.