Conversor de formato de arquivo
Converta instantaneamente entre 8 formatos de arquivo baseados em texto comuns. CSV↔TSV, JSON↔XML, Markdown↔HTML, YAML↔JSON e INI↔JSON - todos bidirecionais, tudo em seu navegador. Carregue arquivos ou cole texto, detecte o formato automaticamente e baixe os resultados.
Supported Conversions
CSV ↔ TSV
Comma-separated ↔ Tab-separated
JSON ↔ XML
Structured data interchange
Markdown ↔ HTML
Text markup to web markup
YAML ↔ JSON
Human-readable config data
INI ↔ JSON
Windows config to structured data
US$ 1
US$ 1
(.*?) /gi, '$1 ') // Regras horizontais .replace(/ /gi, '--- ') // Remove as tags restantes .replace(/ ]+>/g, '') // Limpa espaços em branco extras .replace(/ /g, ' ') .trim(); retornar md; } function yamlToJson (entrada: string): string { try catch } function simpleYamlParse (yaml: string): Record { const result: Record = ; linhas const = yaml.split(' '); for (const linha de linhas) { const trimmed = line.trim(); if (!trimmed || trimmed.startsWith('#')) continue; const colonIdx = trimmed.indexOf(':'); if (dois pontosIdx > 0) } retornar resultado; } função jsonToYaml (entrada: string): string { tentar { const obj = JSON.parse (entrada); função toYaml(dados: desconhecido, indent = ''): string { if (dados === null) return 'null '; if (typeof data === 'string') { if (data.includes(':') || data.includes('#') || data.includes(' ')) return `"$ " `; retornar`$`; } if (tipo de dados === 'número' || tipo de dados === 'booleano') return `$ `; if (Array.isArray(data)) { return data.map(item => `$ - $ `).join(' ') + ' '; } if (typeof data === 'objeto') { let yml = ''; for (const [chave, val] de Object.entries(data as Record )) { if (typeof val === 'objeto' && val !== null && !Array.isArray(val)) { yml += `$ $ : $ `; } else if (Array.isArray(val)) { yml += `$ $ : `; for (const item de val) { yml += `$ - $ `; }yml += ' '; } else { yml += `$ $ : $ `; } } return yml; } retornar ''; } retornar paraYaml(obj).trim(); } catch } function iniToJson (entrada: string): string { try { resultado const: Record > = ; deixe currentSection = 'geral'; for (const linha de input.split(' ')) { const trimmed = line.trim(); if (!trimmed || trimmed.startsWith(';') || trimmed.startsWith('#')) continue; const seçãoMatch = trimmed.match(/^\[(.+)\]$/); if (seçãoMatch) { currentSection = seçãoMatch[1].trim(); if (!resultado[seçãoatual]) resultado[seçãoatual] = ; continuar; } const eqIdx = trimmed.indexOf('='); if (eqIdx > 0) { chave const = trimmed.slice(0, eqIdx).trim(); deixe o valor: string | número | booleano = trimmed.slice(eqIdx + 1).trim(); if ((valor.startsWit h('"') && valor.endsWith('"')) || (valor.startsWith("'") && valor.endsWith("'"))) if (valor === 'verdadeiro') valor = verdadeiro; senão if (valor === 'falso') valor = falso; senão if (!isNaN(Number(value)) && value !== '') value = Number(value); if (!resultado[seçãoatual]) resultado[seçãoatual] = ; resultado[seçãoatual][chave] = valor; } } return JSON.stringify(resultado, nulo, 2); } catch } função jsonToIni (entrada: string): string { try { const obj = JSON.parse (input); deixe ini = ''; for (const [seção, chaves] de Object.entries(obj as Record )) { ini += `[$ ] `; if (typeof chaves === 'objeto' && chaves! == nulo) { for (const [chave, valor] de Object.entries (chaves como registro)) { ini += `$ =$ `; } } ini += ' '; } return ini.trim(); } catch } /* -- Roteador de Conversão -- */ function convert(from: Format, to: Format, input: string): string { if (from === to) return input; // CSV ↔ TSV if (de === 'csv' && para === 'tsv') return csvToTsv(input); if (de === 'tsv' && para === 'csv') retornar tsvToCsv(input); // JSON ↔ XML if (de === 'json' && para === 'xml') return jsonToXml(input); if (de === 'xml' && para === 'json') return xmlToJson(input); // Markdown ↔ HTML if (de === 'markdown' && para === 'html') return markdownToHtml(input); if (de === 'html' && para === 'markdown') return htmlToMarkdown(input); // YAML ↔ JSON if (de === 'yaml' && para === 'json') return yamlToJson(input); if (de === 'json' && para === 'yaml') retornar jsonToYaml(input); // INI ↔ JSON if (de === 'ini' && para === 'json') return iniToJson(input); if (de === 'json' && para === 'ini') return jsonToIni(input); return `A conversão de $ para $ ainda não é suportada.`; } /* -- Componente principal -- */ export function ToolSection() { const [inputText, setInputText] = useState(''); const [outputText, setOutputText] = useState(''); const [fromFormat, setFromFormat] = useState ('csv'); const [toFormat, setToFormat] = useState ('tsv'); const [detectedFormat, setDetectedFormat] = useState (nulo); const [copiado, setCopied] = useState(false); contras t [erro, setError] = useState(''); const [showDetails, setShowDetails] = useState(false); const fileInputRef = useRef (nulo); const handleConvert = useCallback(() => { if (!inputText.trim()) setError(''); try catch (e) { setError(`Erro de conversão: $ `); setOutputText(''); } }, [inputText, fromFormat, toFormat]); const handleDetect = useCallback(() => { if (!inputText.trim()) const detectado = detectFormat(inputText); setDetectedFormat(detectado); if (detectado) }, [inputText]); const handleSwap = useCallback(() => , [fromFormat, toFormat, inputText, outputText]); const handleCopy = useCallback(() => { navigator.clipboard.writeText(outputText).then(() => ); }, [outputText]); const handleDownload = useCallback(() => { const format = ALL_FORMATS[toFormat]; const blob = new Blob([outputText], ); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `convertido$ `; a.click(); URL.revokeObjectURL(url); }, [outputText, toFormat]); const handleFileUpload = useCallback((e: React.ChangeEvent ) => { const file = e.target.files?.[0]; if (!file) return; const reader = new FileReader(); reader.onload = (ev) => { const text = ev.target?.result as string; setInputText(text); const detectado = detectFormat(text); setDetectedFormat(detectado); if (detectado) }; leitor.readAsText(arquivo }, []); const handleReset = useCallback(() => , []); const fromConfig = ALL_FORMATS[fromFormat]; const toConfig = ALL_FORMATS[toFormat]; const FromIcon = fromConfig.icon; const ToIcon = toConfig.icon; return (Conversor de formato de arquivo de {Object.entries(ALL_FORMATS).map(([value, f]) => ( ))} Para {Object.entries(ALL_FORMATS).map(([value, f]) => ( ))} Detectar formato {detectedFormat && ( Detectado: )} {CONVERSION_PAIRS.slice(0, 5).map((pair) => ( } className= > ))} Entrada ( ) Saída de upload ( ) {outputText && ( Download )} Converter para limpar {error && ( )} Conversões suportadas {[ , , , , , ].map((item) => (
Detecção de formato: a ferramenta analisa o texto de entrada para adivinhar o formato. Ele verifica colchetes JSON, tags XML, pares de valores-chave YAML, seções INI, vírgulas CSV, guias TSV e padrões de cabeçalho/lista Markdown.
CSV/TSV: Troca simples de delimitador. CSV usa vírgulas, TSV usa tabulações. As linhas são preservadas.
JSON/XML: JSON é analisado em objetos e serializado como XML com atributos digitados. XML é analisado com um analisador simples baseado em regex que lida com estruturas aninhadas básicas.
Markdown/HTML: cabeçalhos Markdown, negrito, itálico, links, blocos de código e listas são convertidos em elementos HTML. HTML para Markdown reverte o processo.
YAML/JSON: pares de valores-chave YAML (simples) são analisados em um objeto JSON. Objetos JSON são serializados no formato YAML básico.
INI/JSON: as seções INI tornam-se chaves de objeto JSON. Os pares chave=valor tornam-se propriedades. JSON é serializado de volta ao formato INI.
Por que usar o conversor de formato de arquivo?
Converta entre 8 formatos de arquivo baseados em texto instantaneamente em seu navegador - sem uploads, sem servidores, sem inscrição.
- Conversão bidirecional: converta em ambas as direções: CSV↔TSV, JSON↔XML, Markdown↔HTML, YAML↔JSON e INI↔JSON. Troque formatos com um clique para reverter a conversão.
- Detecção inteligente de formato: cole qualquer texto e clique em "Detectar formato" - a ferramenta identifica automaticamente CSV, TSV, JSON, XML, Markdown, HTML, YAML ou INI com base em padrões de conteúdo. Não há necessidade de especificar o formato de origem manualmente.
- Suporte para upload de arquivos: carregue arquivos diretamente em vez de copiar e colar. O conversor lê o conteúdo do arquivo e detecta automaticamente o formato. Funciona com arquivos .csv, .tsv, .json, .xml, .md, .html, .yaml, .ini e .txt.
- Copiar e baixar resultados: Copie a saída convertida para a área de transferência com um clique ou baixe como um arquivo no formato de destino. Cada formato usa seu tipo MIME e extensão de arquivo corretos para uma integração perfeita.
Cenários de conversão comuns
Elimine lacunas de formato entre ferramentas, linguagens e plataformas com conversões instantâneas.
- Migração de dados do desenvolvedor: converta respostas da API JSON em XML para integração de sistemas legados ou transforme configurações XML em JSON para aplicativos JavaScript modernos. CSV para JSON rápido para visualização de dados frontend.
- Preparação de dados de planilhas: converta exportações CSV do Excel/Planilhas Google em TSV para ferramentas Unix ou transforme dumps de banco de dados TSV de volta em CSV para importação de planilhas. Preserva todas as linhas e colunas.
- Formatação de documentos: converta a documentação do Markdown em HTML para publicação ou retire os e-mails em HTML para limpar o Markdown para controle de versão. Funciona muito bem para arquivos README, documentos e rascunhos de blogs.
- Gerenciamento de configuração: converta configurações YAML (Docker, Kubernetes, CI/CD) em JSON para processamento programático ou transforme arquivos INI (PHP, configurações antigas do Windows) em JSON estruturado para ferramentas modernas.
- Web Scraping e APIs: converta HTML bruto extraído de páginas da web em Markdown para uma leitura limpa ou transforme as respostas da API JSON em YAML para arquivos de configuração. Lide com dados em qualquer formato que você receber.
- Troca de dados entre plataformas: preencha lacunas de formato entre diferentes ferramentas e plataformas. Converta configurações INI em JSON para aplicativos Node.js ou transforme exportações de dados XML em CSV para partes interessadas não técnicas.
Sobre o conversor de formato de arquivo
Converta entre CSV, TSV, JSON, XML, Markdown, HTML, YAML e INI - de forma instantânea e privada.
- O que é o conversor de formato de arquivo?: Uma ferramenta baseada em navegador para converter entre 8 formatos de arquivo comuns baseados em texto: CSV, TSV, JSON, XML, Markdown, HTML, YAML e INI. Todos os 5 pares de conversão são bidirecionais – convertam em qualquer direção com um único clique.
- Como funcionam as conversões: CSV/TSV usam troca simples de delimitadores. JSON/XML analisa dados estruturados e serializa no formato de destino. Markdown/HTML converte marcação de texto em marcação da web e vice-versa. YAML/JSON lida com configurações de valor-chave simples. INI/JSON transforma seções de configuração no estilo Windows em objetos estruturados.
- 100% privado e offline: todas as conversões acontecem no seu navegador. Nenhum dado é enviado para nenhum servidor. Sem uploads, sem filas de processamento, sem APIs de terceiros. Após o carregamento da primeira página, o conversor funciona totalmente offline.
- Para desenvolvedores e usuários de dados: desenvolvido para desenvolvedores de software, analistas de dados, redatores técnicos, engenheiros de DevOps e qualquer pessoa que trabalhe com dados de texto estruturados. A detecção inteligente de formato economiza tempo ao identificar automaticamente seu formato de entrada.