Página 2 de 2

Duvida com HASH

Enviado: 09 Nov 2017 07:14
por Ezequiel Moura
Bom dia Pessoal , sou novo aqui e tbm em json. Estou tentando fazer o hash do arquivo abaixo e nao to conseguindo , alguem pode dar um Help . Tenho seguindo os exemplos aqui , mas não sei onde posso estar errando:

{"retorno":{"status_processamento":"3","status":"OK","pagina":1,"numero_paginas":2,"pedidos":[{"pedido":{"id":"385460048","numero":"2","numero_ecommerce":"Extra-10175853102","data_pedido":"02\/06\/2016","data_prevista":"","nome":"14373-FRANCISCO ALESSANDRO FERREIRA","valor":127.22,"id_vendedor":"0","nome_vendedor":"","situacao":"Atendido","codigo_rastreamento":"","url_rastreamento":null}},{"pedido":{"id":"385291456","numero":"1","numero_ecommerce":"Extra-10176932501","data_pedido":"03\/06\/2016","data_prevista":"","nome":"14370-CARLOS ALBERTO DA SILVA","valor":92.77,"id_vendedor":"0","nome_vendedor":"","situacao":"Aprovado","codigo_rastreamento":"DW286367038BR","url_rastreamento":null}},{"pedido":{"id":"386057358","numero":"3","numero_ecommerce":"Extra-10191599201","data_pedido":"06\/06\/2016","data_prevista":"","nome":"WAGNER RODRIGUES BARBOSA","valor":126.06,"id_vendedor":"0","nome_vendedor":"","situacao":"Aprovado","codigo_rastreamento":"DW295588845BR","url_rastreamento":null}},{"pedido":{"id":"386343139","numero":"4","numero_ecommerce":"Extra-10191596101","data_pedido":"06\/06\/2016","data_prevista":"","nome":"bruno siqueira de oliveira","valor":125.55,"id_vendedor":"0","nome_vendedor":"","situacao":"Aprovado","codigo_rastreamento":"DW298075329BR","url_rastreamento":null}},{"pedido":{"id":"386631359","numero":"5","numero_ecommerce":"Extra-10203283402","data_pedido":"09\/06\/2016","data_prevista":"","nome":"Graziele Walzburger","valor":194.48,"id_vendedor":"0","nome_vendedor":"","situacao":"Aprovado","codigo_rastreamento":"DW301426637BR","url_rastreamento":null}},{"pedido":{"id":"386631395","numero":"6","numero_ecommerce":"Lojas Americanas-262637433701","data_pedido":"09\/06\/2016","data_prevista":"","nome":"Roberto Diogo Viegas","valor":148.15,"id_vendedor":"0","nome_vendedor":"","situacao":"Aprovado","codigo_rastreamento":"DW301426787BR","url_rastreamento":null}}]}}


cJSON := xtext // ( arquivo .json)
hJSON := {} // hb_hash()
hb_JSONDecode( cJSON, @hJSON )
quantos=len(hjson)

element:=0

FOR EACH element IN hJSON

xnome:=element ["pedidos","nome"]
msgbox( xnome ,"Nome")


NEXT

Se alguem puder me dar o caminho das pedras . agradeço muito.

Valeu !!!

Duvida com HASH

Enviado: 15 Nov 2017 11:22
por sygecom
Ezequiel, bom dia.
Ezequiel Moura escreveu:Se alguem puder me dar o caminho das pedras . agradeço muito.
Veja se o exemplo ajuda:

Código: Selecionar todos

FUNCTION TESTE_JSON
LOCAL hRet := HB_Hash()
LOCAL cRet:='', nPos:=0, cReg:=''

cRet := '{"result":[{"1":[{"placa":"ABC1234"},{"datahora":"25\/10\/2016 16:09:35"},{"latitude":"-23.5763034820557"},{"longitude":"-46.8151245117188"},{"velocidade":"0"},{"pos_chave":"0"},{"bloqueio":"0"},{"endereco":"Estrada das Rosas, 1234 OSASCO - SP"}],"2":[{"placa":"ABC1234"},{"datahora":"25\/10\/2016 17:25:45"},{"latitude":"-23.5766792297363"},{"longitude":"-46.8154640197754"},{"velocidade":"0"},{"pos_chave":"0"},{"bloqueio":"0"},{"endereco":"Rua A, 0 OSASCO - SP"}] }]}'

hb_JsonDecode( cRet, @hRet )

If Len(hRet) != 0
   If HHasKey( hRet, 'result' )

      For nPos=1 To Len( hRet['result',1] )
         cReg := Alltrim(Str(nPos))

         If !Empty(hRet['result',1][cReg,3]['latitude']) .And.;
            !Empty(hRet['result',1][cReg,4]['longitude'])

            AADD(aARQ,{hRet['result',1][cReg,6]['pos_chave']      ,;  // 01 - ignicao
                       hRet['result',1][cReg,5]['velocidade']     ,;  // 02 - velocidade
                       hRet['result',1][cReg,3]['latitude']       ,;  // 03 - latitude
                       hRet['result',1][cReg,4]['longitude']      ,;  // 04 - longitude
                       hRet['result',1][cReg,1]['placa']          ,;  // 05 - placa
                       Substr(hRet['result',1][cReg,2]['datahora'],1,10),;        // 06 - Data Transmissão
                       Substr(hRet['result',1][cReg,2]['datahora'],12,5)+':00',;  // 07 - Hora Transmissão
                       hRet['result',1][cReg,8]['endereco'],;         // 08 - Endereco de Leitura
                       .F. } )                                        // 09 - lido
         Endif
      Next
   Else
      ALERT('ERRO - RASTREADOR : '+hb_UTF8ToStr(hRet['Message']))
      RETURN(.F.)
   Endif
Else
   ALERT('ERRO - RASTREADOR : Erro no Envio da Chave :)
   Return(.F.)
EndIf

RETURN(.T.)

Duvida com HASH

Enviado: 11 Dez 2017 09:50
por Ezequiel
Deu certo sim. Muito Obrigado .

Ezequiel

Duvida com HASH

Enviado: 27 Abr 2022 17:53
por andersoncamilo
Boa tarde.

Essas duas funções são HARBOUR.

hb_JsonDecode() e hb_hash()

Tem elas equivalentes no xharbour?

E se tem em qual lib encontro elas?

Obrigado

Anderson Camilo

Duvida com HASH

Enviado: 27 Abr 2022 19:03
por Itamar M. Lins Jr.
Olá!
Já tem no xHarbour 1.2 Veja seu Changelog.

Código: Selecionar todos

2011-02-24 23:36 UTC+0700 Andi Jahja <xharbour/AT/telkom/net/id>
  + include/hbjson.h
  + source/rtl/hbjson.c
    ! JavaScript Object Notation (JSON) routines borrowed from Harbour
Saudações,
Itamar M. Lins Jr.

Duvida com HASH

Enviado: 29 Abr 2022 13:28
por alxsts
Olá!
Itamar M. Lins Jr. escreveu:Já tem no xHarbour 1.2 Veja seu Changelog.
Não sabia disto... tinha olhado no xHarbour Language Reference Guide e não encontrei nada a respeito. Depois vi que este guia é de 2006/2007.
andersoncamilo escreveu:hb_JsonDecode() e hb_hash()
No xHarbour a função chama-se Hash() ou {=>}

Código: Selecionar todos

// The example creates hashes using the literal hash operator
// and the Hash() function.

   PROCEDURE Main
      LOCAL hHash1 := { "OPT1" => 10, "OPT2" => 20 }
      LOCAL hHash2, hHash3

      hHash2 := Hash( "OPT2", 200, "OPT3", 300, "OPT4", 400 )

      hHash3 := hHash1 + hHash2

      ? ValToPrg( hHash3 )
      // { "OPT1" => 10, "OPT2" => 200, "OPT3" => 300, "OPT4" => 400 }
   RETURN

Duvida com HASH

Enviado: 29 Abr 2022 16:05
por Itamar M. Lins Jr.
Olá!
Depois vi que este guia é de 2006/2007.
Pois é, o Patrick Mast fez esse livro muito bom por sinal na época. Vendeu e depois disponibilizou o PDF. Pagou p/ uma uma equipe ou alguém fazer. Mas ficou só nisso ai mesmo, não acompanhou a evolução do xHarbour.
Só tem até essa data ai. 2008,2009,2010... não tem. Outro motivo ai para reclamar quando o Viktor começou a mudar o nome de funções no Harbour, no livro ia ficar diferente.

Saudações,
Itamar M. Lins Jr.

Duvida com HASH

Enviado: 29 Abr 2022 16:23
por Itamar M. Lins Jr.
Olá!
No xHarbour a função chama-se Hash() ou {=>}
No Harbour temos as duas. hash()(hbcompat.ch) e hb_hash()

Saudações,
Itamar M. LIns Jr.

Duvida com HASH

Enviado: 05 Set 2022 22:35
por Linguagemclipper
Eu até achei esses 2 arquivos aí fuçando na web:
2 + include/hbjson.h
3 + source/rtl/hbjson.c
Mas, não conseguí a respectiva LIB nem compilar ela.

Duvida com HASH

Enviado: 05 Out 2022 11:12
por Linguagemclipper
Dê uma olhada nesses exemplos bem detalhados e explicados:

https://linguagemclipper.com.br/aprendendo-hash

Conseguí usar essa lib do JSON no xHarbour 1.2.3 + BCC582.