Manipulando JSONs com a JSONObject – Maratona AdvPL e TL++ 316

Nesse vídeo demonstraremos a utilização da classe JSONObject que serve para criar ou ler conteúdos em JSON (conteúdos com chave e valor).

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe316
Converte texto ou arquivo para um objeto JSON
@type Function
@author Atilio
@since 25/02/2023
@see https://tdn.totvs.com/display/tec/Classe+JsonObject
@obs 

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe316()
    Local aArea      := FWGetArea()
    Local cJsonText  := ""
    Local jDados
    Local cError
    Local aSites
    Local cMensagem := ""
    Local nAtual

    //Monta o JSON que será convertido em um Objeto
    cJsonText := '{' + CRLF
    cJsonText += '  "nome":"Atilio",' + CRLF
    cJsonText += '  "idade":29,' + CRLF
    cJsonText += '  "gostaDeLer":true,' + CRLF
    cJsonText += '  "sites":[' + CRLF
    cJsonText += '    {"nome":"Terminal de Informacao", "url":"terminaldeinformacao.com"},' + CRLF
    cJsonText += '	  {"nome":"Atilio Sistemas", "url":"atiliosistemas.com"}' + CRLF
    cJsonText += '  ]' + CRLF
    cJsonText += '}' + CRLF

    //Transformando o JSON (texto) em um objeto
    jDados  := JsonObject():New()
    cError  := jDados:FromJson(cJsonText)

    //Se tiver algum erro no Parse, encerra a execução
    IF ! Empty(cError)
        FWAlertError("Houve um erro na conversão do texto para objeto: " + cErro, "Falha no 'parse' do JSON")
    Else
        //Começa a montar uma mensagem
        cMensagem += "Nome: " + jDados:GetJsonObject('nome') + CRLF + CRLF

        //Busca os sites
        aSites := jDados:GetJsonObject('sites')

        //Se encontrou um Array, percorre adicionando a mensagem
        If ValType(aSites) == "A"
            For nAtual := 1 To Len(aSites)
                cMensagem += "Url: " + aSites[nAtual]:GetJsonObject("url") + CRLF
            Next
        EndIf

        //Exibindo a mensagem
        FWAlertInfo(cMensagem, "Exemplo de JsonObject")
    EndIf

    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação