Função ArrToJson para transformar um Array numa String JSON – Maratona AdvPL e TL++ 040

Nesse vídeo demonstraremos em como utilizar a função ArrToJson, que pega um Array e transforma em uma string no formato JSON.

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

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe040
Exemplo de função que converte um Array para uma String em JSON
@type Function
@author Atilio
@since 28/11/2022
@obs 
    Função ArrToJson
    Parâmetros
        + Array que será convertido para uma String em JSON
    Retorno
        + Texto da String em JSON

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

User Function zExe040()
    Local aArea    := FWGetArea()
    Local aDados   := {}
    Local cResult  := ""

    //Adiciona informações no Array
    aAdd(aDados, {"Site", "Terminal de Informação"})
    aAdd(aDados, {"URL",  "https://terminaldeinformacao.com"})

    //Transforma o Array em uma String JSON
    cResult := ArrToJson(aDados)

    //Mostra o resultado
    FWAlertInfo("cResult é " + cResult, "Resultado do ArrToJson")

    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.

4 Responses

  1. Julio Rocha disse:

    Professor, boa tarde! como ficaria para mais de um elemento?

    • Bom dia Julio, tudo joia?

      Você quer dizer, tipo um array multidimensional com várias linhas e colunas? Se sim, o ideal não é usar a ArrToJson, mas usar direto na JsonObject. Abaixo um exemplo, conforme a resposta que enviamos recentemente no nosso grupo do WhatsApp:
      […]
      //passo 1, crie o objeto JSON
      jResponse := JsonObject():New()

      //passo 2, declare um array dentro dele
      jResponse[‘objects’] := {}

      //passo 3, faça seu laço de repetição, e de o aAdd nesse array
      While ! QRY_TAB->(EoF())
      nAtual++

      oRegistro := JsonObject():New()
      oRegistro[‘cod’] := (cAliasWS)->B1_COD
      oRegistro[‘desc’] := (cAliasWS)->B1_DESC
      oRegistro[‘tipo’] := (cAliasWS)->B1_TIPO
      aAdd(jResponse[‘objects’], oRegistro)

      QRY_TAB->(DbSkip())
      EndDo

      //passo 4, transforme o objeto JSON em String
      cSuaString := jResponse:toJSON()
      […]

      Uma observação importante, é que o trecho acima foi gerado pelo Autumn Code Maker, onde você pode criar seus WebServices em poucos passos (PUT, POST, DELETE e GET), nesse link tem um exemplo em vídeo: https://terminaldeinformacao.com/2022/09/15/como-criar-uma-aplicacao-rest-em-advpl-em-poucos-passos/

      Um grande abraço.

  2. Rafael Strozi disse:

    Salvou meu dia!

Deixe uma resposta

Terminal de Informação