<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><category>pcsoft.br.windev</category><copyright>Copyright 2026, PC SOFT</copyright><lastBuildDate>30 Jul 2025 03:29:33 Z</lastBuildDate><pubDate>30 Jul 2025 03:29:33 Z</pubDate><description>Aqui está um exemplo completo em WLanguage (WL) que lê um arquivo CSV, converte seu conteúdo para JSON, e salva esse conteúdo como um arquivo .txt, permitindo escolher entre ANSI, Unicode ou UTF-8:&#13;
&#13;
⸻&#13;
&#13;
✅ Procedure CSVtoJSONFile&#13;
&#13;
// 📁 CSVtoJSONFile - Converte CSV para JSON e salva em arquivo de texto&#13;
// ⚙️ Parâmetros:&#13;
//    sCSVPath: string -&gt; Caminho do arquivo CSV de entrada&#13;
//    sJSONPath: string -&gt; Caminho do arquivo JSON de saída (pode ter extensão .txt)&#13;
//    sSeparator: string -&gt; Separador de colunas (ex: "," ou ";")&#13;
//    nEncoding: int -&gt; Codificação do arquivo de saída:&#13;
//                    1 = ANSI, 2 = Unicode, 3 = UTF-8&#13;
//&#13;
// 🧠 Observação: Assume que a primeira linha contém o cabeçalho (nomes dos campos)&#13;
&#13;
PROCEDURE CSVtoJSONFile(sCSVPath is string, sJSONPath is string, sSeparator is string = ",", nEncoding is int = 1)&#13;
&#13;
IF NOT fFileExist(sCSVPath) THEN&#13;
   Error("Arquivo CSV não encontrado: " + sCSVPath)&#13;
   RETURN&#13;
END&#13;
&#13;
csvID is int = fOpen(sCSVPath, foRead)&#13;
IF csvID = -1 THEN&#13;
   Error("Erro ao abrir o arquivo CSV.")&#13;
   RETURN&#13;
END&#13;
&#13;
// Lê o cabeçalho&#13;
sHeaderLine is string = fReadLine(csvID)&#13;
arrHeaders is array of string = StringSplit(sHeaderLine, sSeparator)&#13;
&#13;
jsonText is string = "["&#13;
bFirstLine is boolean = True&#13;
&#13;
LOOP&#13;
   sLine is string = fReadLine(csvID)&#13;
   IF sLine = EOT THEN BREAK&#13;
&#13;
   arrValues is array of string = StringSplit(sLine, sSeparator)&#13;
&#13;
   IF NOT bFirstLine THEN&#13;
      jsonText += ","&#13;
   END&#13;
   bFirstLine = False&#13;
&#13;
   jsonText += CR + TAB + "{"&#13;
   FOR i = 1 TO ArrayCount(arrHeaders)&#13;
      sKey is string = NoSpace(arrHeaders[i])&#13;
      sValue is string = i &lt;= ArrayCount(arrValues) THEN arrValues[i] ELSE ""&#13;
      jsonText += ["%1\"%2\":\"%3\""].FormatIf(i &gt; 1, ",", sKey, sValue)&#13;
   END&#13;
   jsonText += "}"&#13;
END&#13;
&#13;
jsonText += CR + "]"&#13;
fClose(csvID)&#13;
&#13;
// Salva JSON no formato escolhido&#13;
SWITCH nEncoding&#13;
CASE 1&#13;
   fSaveText(sJSONPath, jsonText, foAnsi)&#13;
CASE 2&#13;
   fSaveText(sJSONPath, jsonText, foUnicode)&#13;
CASE 3&#13;
   fSaveText(sJSONPath, jsonText, foUTF8)&#13;
OTHER CASE&#13;
   Error("Codificação inválida. Use: 1 = ANSI, 2 = Unicode, 3 = UTF-8")&#13;
   RETURN&#13;
END&#13;
&#13;
Info("Arquivo JSON gerado com sucesso: " + sJSONPath)&#13;
&#13;
&#13;
⸻&#13;
&#13;
✅ Exemplo de uso:&#13;
&#13;
CSVtoJSONFile("C:\dados\produtos.csv", "C:\dados\produtos.json", ";", 3) // UTF-8&#13;
&#13;
&#13;
⸻&#13;
&#13;
📂 Saída esperada (JSON formatado):&#13;
&#13;
[&#13;
   {"ID":"1","NOME":"Produto A","PRECO":"10.00"},&#13;
   {"ID":"2","NOME":"Produto B","PRECO":"15.00"},&#13;
   {"ID":"3","NOME":"Produto C","PRECO":"22.50"}&#13;
]&#13;
&#13;
&#13;
⸻&#13;
&#13;
⚠️ Dicas:&#13;
	•	Sempre valide se o CSV tem cabeçalho e as colunas estão no mesmo número em cada linha.&#13;
	•	Se quiser salvar com indentação e JSON real (Buffer ou Variant), posso criar uma versão com VariantToJSON.&#13;
&#13;
--&#13;
Adriano José Boller&#13;
______________________________________________&#13;
Consultor e Representante Oficial da&#13;
PcSoft no Brasil&#13;
+55 (41) 99949 1800&#13;
adrianoboller@gmail.com&#13;
skype: adrianoboller&#13;
http://wxinformatica.com.br/</description><ttl>30</ttl><generator>WEBDEV</generator><language>pt_BR</language><link>https://forum.pcsoft.fr/en-US/pcsoft.br.windev/5160-exemplo-arquivo-csv-converte-seu-conteudo-para-json/read.awp</link><title>Exemplo lê um arquivo CSV, converte seu conteúdo para JSON, e salva esse conteúdo como um arquivo .txt, permitindo escolher entre ANSI, Unicode ou UTF-8</title><managingEditor>moderateur@pcsoft.fr (The moderator)</managingEditor><webMaster>webmaster@pcsoft.fr (The webmaster)</webMaster></channel></rss>
