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.
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.
Salvou meu dia!
Bom dia Rafael, tudo joia?
Opa, obrigado pelo comentário.
Um grande abraço.
Atilio, bom dia. Tudo bom?
Como eu faço para fazer em múltiplas chaves no caso quando insiro {“SB9”, {…}} não consigo transformar em JSON.
aArray := { {“SB4”, “S”}, {“SB1”, “S”}, {“SB0”, “S”}, {“SB2”, “S”}, {“SB9”, { {“03”, “N”}, {“15”, “N”}, {“21”, “N”}, {“24”, “N”}, {“30”, “N”}, {“36”, “N”} }} }
Bom dia Júnior, tudo joia?
Com arrays multidimensionais, acho que a melhor alternativa seria já fazer nativo em JsonObject, por exemplo:
Tenha um ótimo e abençoado fim de semana.
Um forte abraço.