Transformando string em objeto JSON | Ti Responde 029

No vídeo de hoje, vamos demonstrar em como utilizar a classe JSONObject para transformar uma String em um objeto JSON.

Hoje, a dúvida foi feita pelo grande Lucas, onde ele perguntou em como pegar uma string JSON e manipular ela via AdvPL.

Com isso em mente, fiz um vídeo explicando como sobre usar a classe JSONObject para transformar a String em um objeto.

E abaixo o código fonte desenvolvido para exemplificar:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zVid0029
Função de exemplo, pegando uma string (json) e transformando em objeto
@type  Function
@author Atilio
@since 21/04/2022
/*/

User Function zVid0029()
    Local aArea  := FWGetArea()
    Local cTexto := '{"nome":"daniel", "empresa":"atilio sistemas", "site":"https://atiliosistemas.com", "contatos":[{"email":"contato@atiliosistemas.com"}, {"email":"suporte@terminaldeinformacao.com"}]}'
    Local oJson
    Local cErro  := ''
    Local cNome  := ''
    Local cSite  := ''

    //Pega o texto e transforma em objeto
    oJson := JsonObject():New()
    cErro := oJson:FromJson(cTexto)

    //Se houve erro
    If ! Empty(cErro)
        FWAlertError("Falha ao converter texto para Objeto JSON: " + CRLF + cErro, "Conversão JSON")

    //Senão, manipula o JSON
    Else
        If ! Empty(oJson:GetJsonObject('nome'))
            cNome := oJson:GetJsonObject('nome')
        EndIf

        If ! Empty(oJson:GetJsonObject('site'))
            cSite := oJson:GetJsonObject('site')
        EndIf

        FWAlertSuccess("Nome: " + cNome + CRLF + "Site: " + cSite, "Sucesso na conversão JSON")
    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