Histórico da Página
...
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#include 'protheus.ch' User Function JSonHash() Local oJson := Nil Local strJson1 := '{"inteiro":100,"double":10.32,"OK":true,"NOK":false,"NULO":null,"VAZIO":"","ROWS":[{"Valor":5000,"OBJ":{"x":2},"Data":"2014-08-29"}, "ricardo"], "VETOR":[1,2,3,4]}' Local strJson := Nil Local lenStrJson := 0 Local aJsonfields := Nil{} Local nRetParser := 0 Local lRet := .F. Local oJHM := .F. Local xGet := Nil Local cGet := Nil // Cria o objeto para fazer o parser do Json oJson := tJsonParser():New() // ------------------------------------------------------------------- strJson = strJson1 lenStrJson := Len(strJson) // Faz o Parser da mensagem JSon e extrai para Array (aJsonfields) aJsonfields := {} lRet = oJson:Json_Parser(strJson, lenStrJson, @aJsonfields, @nRetParser) If ( lRet == .F. ) ConOut("##### [JSON][ERR] " + "Parser com erro" + " MSG len: " + AllTrim(Str(lenStrJson)) + " bytes lidos: " + AllTrim(Str(nRetParser))) Else ConOut("[JSON] "+ "+++++ PARSER OK num campos: " + AllTrim(Str(Len(aJsonfields))) + " MSG len: " + AllTrim(Str(lenStrJson)) + " bytes lidos: " + AllTrim(Str(nRetParser))) VarInfo("a->", aJsonfields) EndIf // Faz o Parser da mensagem JSon e extrai para Array (aJsonfields) e cria tambem um HashMap para os dados da mensagem (oJHM) aJsonfields := {} lRet = oJson:Json_Hash(strJson, lenStrJson, @aJsonfields, @nRetParser, @oJHM) If ( lRet == .F. ) ConOut("##### [JSON][ERR] " + "Parser com erro" + " MSG len: " + AllTrim(Str(lenStrJson)) + " bytes lidos: " + AllTrim(Str(nRetParser))) ConOut("Erro a partir: " + SubStr(strJson, (nRetParser+1))) Else ConOut("[JSON] "+ "+++++ PARSER OK num campos: " + AllTrim(Str(Len(aJsonfields))) + " MSG len: " + AllTrim(Str(lenStrJson)) + " bytes lidos: " + AllTrim(Str(nRetParser))) //VarInfo("b->", aJsonfields) // Se nao for utilizar aJsonfields, libere o vetor aJsonfields := {} // Obtem o valor dos campos usando a chave cGet := "inteiro" lRet := HMGet(oJHM, cGet, xGet) If (lRet) VarInfo("c->", xGet) Else ConOut("ERRO ao obter: " + cGet) EndIf cGet := "ROWS[1]" lRet := HMGet(oJHM, cGet, xGet) If (lRet) VarInfo("d->", xGet) Else ConOut("ERRO ao obter: " + cGet) EndIf cGet := "ROWS[0].OBJ.x" lRet := HMGet(oJHM, cGet, xGet) If (lRet) VarInfo("e->", xGet) Else ConOut("ERRO ao obter: " + cGet) EndIf cGet := "VETOR[2]" lRet := oJHM:Get(cGet, xGet) If (lRet) VarInfo("f->", xGet) Else ConOut("ERRO ao obter: " + cGet) EndIf // Lista todas as Chaves do Json lRet := HMList(oJHM, xGet) If (lRet) ConOut("LISTA JSON HASHMAP:") VarInfo("LISTA", xGet) Else ConOut("ERRO ao obter: JSON HASHMAP") EndIf EndIf Return /* CHAVES = VALORES inteiro=100 double=10.32 OK=.T. NOK=.F. NULO= VAZIO="" ROWS[0].Valor=5000 ROWS[0].OBJ.x=2 ROWS[0].Data=2014-08-29 ROWS[1]=ricardo VETOR[0]=1 VETOR[1]=2 VETOR[2]=3 VETOR[3]=4 */ |
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas