Page tree
Skip to end of metadata
Go to start of metadata

Cria um Parser para tratar mensagens no formato JSon.

Hierarquia

  • TJsonParser

Construtores

Propriedades

Métodos

Exemplos

Exemplo 1
#include 'protheus.ch'

User Function JSon()
  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 := {}
  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) e cria tambem um HashMap para os dados da mensagem (oJHM)
  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)))
    
    // 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
  EndIf
  
Return

Abrangência

Totvs Application Server com release igual ou superior a 7.00.131227A

Veja também

  • No labels