Clipper On Line • Ver Tópico - Duvida com HASH
Página 1 de 2

Duvida com HASH

MensagemEnviado: 09 Jan 2017 13:41
por frazato
Boa tarde! estou tendo que fazer a integração com o sistema "meus pedidos" que faz a parte de venda externa via tablet e trata arquivos em formato JSON, até gera os arquivos ok, o problema e o retorno do pedido que também retorna um arquivo JSON, vi uma função o harbour que faz a conversão para arquivo HASH até ai blz , problema é que não estou conseguindo fazer o mesmo troca de "elemento" tipo "items" e codigo de itens para adicionar em meu dbf.

//---------------------------------------------------------
Function Main()
Local cLinha := ''
cLinha := ;
''+;
   [ {]+;
    ["id": 1,]+;
     ["cliente_id": 123,]+;
     ["observacoes": "Favor faturar urgente.",]+;
      '"items": {'+;
        ["id": 5000,]+;
         ["produto_id": 1001]+;
           '},'+;
           [{"id": 8000,"produto_id": 1002}]+;
           ' }'
           
Alert( cLinha)

cJSON := cLinha
hJSON := {}//hb_hash()
hb_JSONDecode( cJSON, @hJSON )

//hb_HKeepOrder( hJSON, .T. )

? Len(hJSON)
? hJSON['cliente_id']   
? hJSON['observacoes']   
? hJSON['items']   

If !hb_HHasKey( hJSON, 'items','produto_id')
    Alert('Nao tem a chave items')
Else
*?  hJSON['items','produto_id']
*?  Len(hJSON['items'])//,'produto_id'])
*For i:= 1 to Len(hJSON['items'])
*   ? hJSON['items','produto_id']
*   *? Hb_hpos(hJSON,'produto_id')
*Next
Endif
element := 0
hTeste  := hJSON

FOR EACH element IN hTeste['items']
         *? element['items','produto_id']                          // valor do componente, neste caso 1 e 2
         *? element:__enumKey()     //neste caso é apresentado a chave da hash, neste caso "a" e "b"
         ? hTeste['items','produto_id']
         *? hb_hPos(hTeste['items','produto_id'])
         *? hb_OsNewLine()
         ? hb_HDEL( hTeste,'produto_id')
         ? HB_HPOS( hTeste,'items' )
         ? Len(hTeste['items'])
   
NEXT

Return nil


Preciso fazer ele pular como se fosse um arrays.

Frazato

Duvida com HASH

MensagemEnviado: 09 Jan 2017 14:27
por janio
Frazato,

O sistema é "meus pedidos" ou "suas vendas" (https://www.suasvendas.com/) ?

Semana passada peguei um cliente que irá fazer a parte de vendas por tablet através do "suas vendas" e o sistema de gestão será o nosso. Mas ainda não deu nem tempo de ver a parte de integração...

Acompanhando esse tópico...

Janio

Duvida com HASH

MensagemEnviado: 09 Jan 2017 14:36
por frazato
é meus pedidos.com.br

https://meuspedidos.com.br/153989/integ ... parceiros/

o meu cliente gostou do sistema, também achei legal.

Frazato

Duvida com HASH

MensagemEnviado: 09 Jan 2017 15:25
por wmanesco
Frazato, não entendi direito o problema..

É quando você tem que mandar um json, ou o problema é em ler o retorno do app?

Se for para enviar, o hb também a função hb_JSONEncode(hJSON), ou seja, poderia ser assim:

hJSON := hb_Hash()
hItems := hb_Hash()

hItems["..."] //aqui coloca o json de itens

hJSON["id"] := 1
hJSON["items"] := hItems
//se items for array, também da para fazer tipo

hJSON["items"] := { hItems, hItems2 }

cJSON := hb_JSONEncode(hJSON)


Como disse não sei se o problema é esse..

Duvida com HASH

MensagemEnviado: 09 Jan 2017 15:29
por frazato
Meu problema é para importar o pedido gerado ( JSON) para meu sistema, imagina que num pedido veem varios itens no mesmo JSON e preciso tratar cada elemento como se fosse um item, tipo assim!

For i:= 1 to Len(Itens)
? "itens"+Str(i,2) +' Produto '+Itens[i,2] // 'Codigo'
Next

Frazato

Duvida com HASH

MensagemEnviado: 09 Jan 2017 15:41
por wmanesco
Me parece que este json está incorreto, olha ele corrigido (no meu ponto de vista), parece que deu certo..

//---------------------------------------------------------
Function Main()
Local cLinha := ''
cLinha := ;
''+;
   [ {]+;
    ["id": 1,]+;
     ["cliente_id": 123,]+;
     ["observacoes": "Favor faturar urgente.",]+;
      '"items": [ {'+;
            ["id": 5000,]+;
            ["produto_id": 1001]+;
          '},'+;
          '{"id": 8000,"produto_id": 1002}'+;
           ']}'
           
hb_memoWrit("teste.json", cLinha)         //apenas para visualização
Alert( cLinha)

cJSON := cLinha
hJSON := {}//hb_hash()
hb_JSONDecode( cJSON, @hJSON )

element := 0
hTeste  := hJSON

FOR EACH element IN hTeste['items']

   ? element

   ? element["id"]
   ? element["produto_id"]
   
NEXT

Return nil

Duvida com HASH

MensagemEnviado: 09 Jan 2017 15:54
por frazato
:{ :{ :{ :{ :{
ShoW!

deu certo, acho que eu mexi no JSON, agora tá certinho, muito obrigado!

Frazato

Duvida com HASH

MensagemEnviado: 09 Jan 2017 17:59
por wmanesco
:D

Duvida com HASH

MensagemEnviado: 09 Jan 2017 19:55
por fladimir
Não precisaria meu comentário mas faço questão...

Entrei pra ver do q se tratava e vi q era um assunto q não entendia mas vou acompanhando para aprender e essa interação q vemos e auxilio dos colegas e quando conseguimos ver a questão resolvida nos motiva.

Parabéns colegas.

:-Y :-Y :-Y

Duvida com HASH

MensagemEnviado: 18 Jan 2017 16:45
por frazato
Boa tarde!
Este é um arquivo JSON que tem os dados de pedidos e itens de pedidos, quando tenho apenas um pedido consigo importar através da rotina acima, mais tenho que retirar os "[]" do inicio e final do arquivo, agora não consigo fazer a leitura do arquivo JSON com mais de um pedido, que coisa de doido isso, saudade de usar arquivo txt ou xml esse JSON tá me deixando doido.

Segue arquivo em anexo para quem possa me dar uma ajudinha se possivel.

Frazato
    {
        "cliente_id": 2209938,
        "condicao_pagamento": "28dias",
        "forma_pagamento_id": 0,
        "cliente_nome_fantasia": "",
        "cliente_complemento": "",
        "data_emissao": "2017-01-17",
        "total": 224.41,
        "id": 1558742,
        "representada_id": 44406,
        "transportadora_id": 0,
        "representada_razao_social": "JAF DESENVOLVIMENTOS",
        "transportadora_nome": "",
        "cliente_suframa": "",
        "nome_contato": "",
        "cliente_inscricao_estadual": "000000000000000",
        "cliente_bairro": ".",
        "status": "2",
        "condicao_pagamento_id": 0,
        "cliente_estado": "",
        "observacoes": "mensagem adicionais",
        "numero": 1,
        "ultima_alteracao": "2017-01-17 09:15:40",
        "representada_nome_fantasia": "JAF DESENVOLVIMENTOS",
        "criador_id": 36564,
        "cliente_cep": "",
        "cliente_rua": ".",
        "items": [
            {
                "tipo_ipi": "P",
                "quantidade": 4.0,
                "preco_bruto": 3.69,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "",
                "id": 10735289,
                "produto_nome": "ABACAXI PEROLA UN",
                "produto_id": 10966771,
                "quantidade_grades": [
                    {
                        "cor": "Azul",
                        "quantidade": 2.0,
                        "tamanho": null
                    },
                    {
                        "cor": "Verde",
                        "quantidade": 2.0,
                        "tamanho": null
                    }
                ],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 14.76,
                "produto_codigo": "02002",
                "preco_liquido": 3.69,
                "descontos": []
            },
            {
                "tipo_ipi": "P",
                "quantidade": 35.0,
                "preco_bruto": 5.99,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "teste",
                "id": 10735290,
                "produto_nome": "BANANA MACA KG",
                "produto_id": 10966780,
                "quantidade_grades": [
                    {
                        "cor": "Azul",
                        "quantidade": 12.0,
                        "tamanho": null
                    },
                    {
                        "cor": "Verde",
                        "quantidade": 23.0,
                        "tamanho": null
                    }
                ],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 209.65,
                "produto_codigo": "02010",
                "preco_liquido": 5.99,
                "descontos": []
            }
        ],
        "cliente_cidade": ".",
        "extras": [],
        "contato_nome": "",
        "cliente_cnpj": "",
        "cliente_razao_social": "DORIVAL BATISTA DE LIMA",
        "cliente_numero": null
    },
    {
        "cliente_id": 2213081,
        "condicao_pagamento": "resr",
        "forma_pagamento_id": 0,
        "cliente_nome_fantasia": "supermercado la villa ltda",
        "cliente_complemento": "",
        "data_emissao": "2017-01-18",
        "total": 209.32,
        "id": 1558753,
        "representada_id": 44406,
        "transportadora_id": 42367,
        "representada_razao_social": "JAF DESENVOLVIMENTOS",
        "transportadora_nome": "proprio",
        "cliente_suframa": "",
        "nome_contato": "",
        "cliente_inscricao_estadual": "495097613116",
        "cliente_bairro": "JARDIM MATILDE",
        "status": "2",
        "condicao_pagamento_id": 0,
        "cliente_estado": "",
        "observacoes": "",
        "numero": 2,
        "ultima_alteracao": "2017-01-18 15:39:28",
        "representada_nome_fantasia": "JAF DESENVOLVIMENTOS",
        "criador_id": 36564,
        "cliente_cep": "",
        "cliente_rua": "R DO EXPEDICIONARIO",
        "items": [
            {
                "tipo_ipi": "P",
                "quantidade": 6.0,
                "preco_bruto": 2.22,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "",
                "id": 10735303,
                "produto_nome": "AMENDOIM DESC SALG 150GR YOKI",
                "produto_id": 10968644,
                "quantidade_grades": [],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 13.32,
                "produto_codigo": "00803",
                "preco_liquido": 2.22,
                "descontos": []
            },
            {
                "tipo_ipi": "P",
                "quantidade": 5.0,
                "preco_bruto": 1.0,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "",
                "id": 10735304,
                "produto_nome": "CORANTE EM PO VERMELHO REGINA 5GR",
                "produto_id": 10967931,
                "quantidade_grades": [],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 5.0,
                "produto_codigo": "00097",
                "preco_liquido": 1.0,
                "descontos": []
            },
            {
                "tipo_ipi": "P",
                "quantidade": 1.0,
                "preco_bruto": 1.0,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "",
                "id": 10735305,
                "produto_nome": "CORANTE EM PO VERDE REGINA 5GR",
                "produto_id": 10967930,
                "quantidade_grades": [],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 1.0,
                "produto_codigo": "00096",
                "preco_liquido": 1.0,
                "descontos": []
            },
            {
                "tipo_ipi": "P",
                "quantidade": 2.0,
                "preco_bruto": 1.0,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "",
                "id": 10735306,
                "produto_nome": "CORANTE EM PO AZUL REGINA 5GR",
                "produto_id": 10967928,
                "quantidade_grades": [],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 2.0,
                "produto_codigo": "00094",
                "preco_liquido": 1.0,
                "descontos": []
            },
            {
                "tipo_ipi": "P",
                "quantidade": 3.0,
                "preco_bruto": 1.0,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "",
                "id": 10735307,
                "produto_nome": "CORANTE EM PO AMARELO REGINA 5GR",
                "produto_id": 10967929,
                "quantidade_grades": [],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 3.0,
                "produto_codigo": "00095",
                "preco_liquido": 1.0,
                "descontos": []
            },
            {
                "tipo_ipi": "P",
                "quantidade": 50.0,
                "preco_bruto": 3.7,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "",
                "id": 10735308,
                "produto_nome": "FERMENTO FRESCO BIO LEVAPAN 500 GR",
                "produto_id": 10968200,
                "quantidade_grades": [],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 185.0,
                "produto_codigo": "00366",
                "preco_liquido": 3.7,
                "descontos": []
            }
        ],
        "cliente_cidade": "OURINHOS",
        "extras": [],
        "contato_nome": "",
        "cliente_cnpj": "",
        "cliente_razao_social": "SUPERMERCADO LA VILLA LTDA",
        "cliente_numero": null
    },
    {
        "cliente_id": 2212195,
        "condicao_pagamento": "rrss",
        "forma_pagamento_id": 0,
        "cliente_nome_fantasia": "PADARIA PAO DE ACUCAR",
        "cliente_complemento": "",
        "data_emissao": "2017-01-18",
        "total": 22.3,
        "id": 1558755,
        "representada_id": 44406,
        "transportadora_id": 42367,
        "representada_razao_social": "JAF DESENVOLVIMENTOS",
        "transportadora_nome": "proprio",
        "cliente_suframa": "",
        "nome_contato": "",
        "cliente_inscricao_estadual": "209.308.515.118",
        "cliente_bairro": "VILA CARMEM",
        "status": "2",
        "condicao_pagamento_id": 0,
        "cliente_estado": "",
        "observacoes": "",
        "numero": 3,
        "ultima_alteracao": "2017-01-18 17:24:20",
        "representada_nome_fantasia": "JAF DESENVOLVIMENTOS",
        "criador_id": 36564,
        "cliente_cep": "",
        "cliente_rua": "AV CRUZEIRO DO SUL, 14-60",
        "items": [
            {
                "tipo_ipi": "P",
                "quantidade": 2.0,
                "preco_bruto": 1.7,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "",
                "id": 10735311,
                "produto_nome": "BAT OND CEB E SAL 100GR YOKITOS",
                "produto_id": 10968502,
                "quantidade_grades": [],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 3.4,
                "produto_codigo": "00662",
                "preco_liquido": 1.7,
                "descontos": []
            },
            {
                "tipo_ipi": "P",
                "quantidade": 2.0,
                "preco_bruto": 1.45,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "",
                "id": 10735312,
                "produto_nome": "BAT LISA NAT 50GR YOKITOS",
                "produto_id": 10968642,
                "quantidade_grades": [],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 2.9,
                "produto_codigo": "00801",
                "preco_liquido": 1.45,
                "descontos": []
            },
            {
                "tipo_ipi": "P",
                "quantidade": 2.0,
                "preco_bruto": 1.18,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "",
                "id": 10735313,
                "produto_nome": "BAT LISA FRANGO GREL 50GR YOKITOS",
                "produto_id": 10968639,
                "quantidade_grades": [],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 2.36,
                "produto_codigo": "00798",
                "preco_liquido": 1.18,
                "descontos": []
            },
            {
                "tipo_ipi": "P",
                "quantidade": 1.0,
                "preco_bruto": 5.24,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "",
                "id": 10735314,
                "produto_nome": "AMENDOIM 1 KG",
                "produto_id": 10967819,
                "quantidade_grades": [],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 5.24,
                "produto_codigo": "00006",
                "preco_liquido": 5.24,
                "descontos": []
            },
            {
                "tipo_ipi": "P",
                "quantidade": 2.0,
                "preco_bruto": 1.2,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "",
                "id": 10735315,
                "produto_nome": "ALIM SOJA MORANGO 200ML MAIS VIDA",
                "produto_id": 10968693,
                "quantidade_grades": [],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 2.4,
                "produto_codigo": "00851",
                "preco_liquido": 1.2,
                "descontos": []
            },
            {
                "tipo_ipi": "P",
                "quantidade": 3.0,
                "preco_bruto": 1.2,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "",
                "id": 10735316,
                "produto_nome": "ALIM SOJA MARACUJA 200ML MAIS VIDA",
                "produto_id": 10968916,
                "quantidade_grades": [],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 3.6,
                "produto_codigo": "01068",
                "preco_liquido": 1.2,
                "descontos": []
            },
            {
                "tipo_ipi": "P",
                "quantidade": 2.0,
                "preco_bruto": 1.2,
                "tabela_preco_id": 0,
                "ipi": 0.0,
                "observacoes": "",
                "id": 10735317,
                "produto_nome": "ALIM SOJA MANGA 200ML MAIS VITA",
                "produto_id": 10968918,
                "quantidade_grades": [],
                "excluido": false,
                "cotacao_moeda": 1.0,
                "st": 0.0,
                "subtotal": 2.4,
                "produto_codigo": "01070",
                "preco_liquido": 1.2,
                "descontos": []
            }
        ],
        "cliente_cidade": "BAURU",
        "extras": [],
        "contato_nome": "",
        "cliente_cnpj": "",
        "cliente_razao_social": "MINAMOTO E MINAMOTO LTDA",
        "cliente_numero": null
    }

Duvida com HASH

MensagemEnviado: 19 Jan 2017 08:08
por wmanesco
Acho que é o seguinte:

se o JSON veio assim:

[
   ...
]


Quando você usar o hb_jsondecode() ele vai te retornar um array de hash, algo assim:

No caso seus pedidos estariam nesse array...
   HB_JSONDecode(cJSON, @aJSON)

   ? hb_isArray(aJSON) //deve ser true

   FOR EACH hPedido IN aJSON
      ? hPedido["client_id"]
   NEXT


Desse jeito você não deve retirar o "[]" pois ele que indica que é um array, e assim permite colocar vários pedidos em um unico JSON

Duvida com HASH

MensagemEnviado: 19 Jan 2017 14:32
por frazato
Boa tarde!!
o retorno do json tá igualzinho você falou, mais seu exemplo não funciona da erro, ate consegui ler os numero de pedido mais os itens consegui aparentemente colocar em um array mais não tó dando conta de ler o resultado, de uma olhada fazendo um favor se puder me ajudar agradeço.

 hTeste  := hJSON
          aJSON   := {}//hb_hash()
   
      HB_JSONDecode(cJSON, @aJSON)
   
      ? hb_isArray(aJSON) //deve ser true
      ? Len(ajSon)
      i:= 1
      FOR EACH element IN aJSON
           ? aJSON[i]["cliente_razao_social"]
           aItens := aJSON[i]['items']
           ? hb_isArray(aItens) //deve ser true
           ? Len(aItens)
           For r:= 1 to Len(aItens)
               ? aItens[r]//['items'][1]
           Next
           i++
      NEXT

Duvida com HASH

MensagemEnviado: 19 Jan 2017 15:48
por frazato
Resolvido!!! ufa!!! assim funciona!!

Muito obrigado pela ajuda por enquanto.. rs

Frazato

FOR EACH element IN aJSON
           ? aJSON[i]["cliente_razao_social"]
           ? aJSON[i]['items']
           aItens := Hb_Hash()
           aItens = aJSON[i]['items']
           ? Len(aItens := aJSON[i]['items'])
           For r:= 1 to Len(aItens)
             ? 'Quant:'+Str(aItens[r]['quantidade'],8,2)+' Preco unit.:'+Str(aItens[r]['preco_liquido'],9,2)
             ? aItens[r]['produto_codigo']+' '+aItens[r]['produto_nome']
           Next
           i++
      NEXT

Duvida com HASH

MensagemEnviado: 19 Jan 2017 18:03
por wmanesco
Funcionando é o que importa =)

A função de decodificar JSON está bem legal, só prestar atenção no JSON...

Quando há JSON dentro de JSON
{
   "item": {"id":1, "desc": "teste"}
}


Será uma Hash assim

? hJSON["item"]["id"]
? hJSON["item"]["desc"]


E também pode ser que tenha arrays para agrupar variados itens

{
   "itens": [ {"id":1, "desc": "teste"}, {"id":2, "desc": "teste2"}]
}


? hJSON["itens"][1]["id"]
? hJSON["itens"][1]["desc"]

? hJSON["itens"][2]["id"]
? hJSON["itens"][2]["desc"]

Duvida com HASH

MensagemEnviado: 20 Jan 2017 16:19
por frazato
Blz!!! vou ficar atento mais por hora tá funcionando, ufa, treco enrolado! to ficando velho não aprendo "comandos" novos.

Valeu muito obrigado!

Frazato

Duvida com HASH

MensagemEnviado: 09 Nov 2017 06: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

MensagemEnviado: 15 Nov 2017 10: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:
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

MensagemEnviado: 11 Dez 2017 08:50
por Ezequiel
Deu certo sim. Muito Obrigado .

Ezequiel

Duvida com HASH

MensagemEnviado: 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

MensagemEnviado: 27 Abr 2022 19:03
por Itamar M. Lins Jr.
Olá!
Já tem no xHarbour 1.2 Veja seu Changelog.
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

MensagemEnviado: 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 {=>}
// 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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.