Convertidor de formato de archivo
Convierta instantáneamente entre 8 formatos de archivos comunes basados en texto. CSV↔TSV, JSON↔XML, Markdown↔HTML, YAML↔JSON e INI↔JSON: todos bidireccionales, todos en su navegador. Cargue archivos o pegue texto, detecte el formato automáticamente y descargue los 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
$1
$1
(.*?) /gi, '$1 ') // Reglas horizontales .replace(/ /gi, '--- ') // Elimina las etiquetas restantes .replace(/ ]+>/g, '') // Limpia los espacios en blanco adicionales .replace(/ /g, ' ') .trim(); volver md; } función yamlToJson (entrada: cadena): cadena { intentar capturar } función simpleYamlParse (yaml: cadena): Registro { resultado constante: Registro =; líneas constantes = yaml.split(' '); for (línea constante de líneas) { const recortada = line.trim(); if (!trimmed || trimmed.startsWith('#')) continuar; const colonIdx = trimmed.indexOf(':'); si (colonIdx > 0) } devuelve resultado; } función jsonToYaml (entrada: cadena): cadena { intentar { const obj = JSON.parse (entrada); funcion toYaml(datos: desconocido, sangría = ''): cadena {si (datos === nulo) devuelve 'nulo'; if (tipo de datos === 'cadena') { if (data.includes(':') || data.includes('#') || data.includes(' ')) return `"$ " `; devolver `$ `; } if (tipo de datos === 'número' || tipo de datos === 'booleano') return `$ `; if (Array.isArray(datos)) { return datos.map(item => `$ - $ `).join(' ') + ' '; } if (tipo de datos === 'objeto') { let yml = ''; for (const [clave, val] de Object.entries(datos como Registro)) { if (typeof val === 'objeto' && val !== null && !Array.isArray(val)) { yml += `$ $ : $ `; } else if (Array.isArray(val)) { yml += `$ $ : `; for (elemento constante de val) { yml += `$ - $ `; } yml += ' '; } más { yml += `$ $ : $ `; } } devolver yml; } devolver ''; } volver aYaml(obj).trim(); } catch } función iniToJson (entrada: cadena): cadena { intentar { resultado constante: Registro > =; let sección actual = 'general'; for (línea constante de input.split(' ')) { const recortado = line.trim(); if (!trimmed || trimmed.startsWith(';') || trimmed.startsWith('#')) continuar; const secciónMatch = trimmed.match(/^\[(.+)\]$/); if (correspondencia de sección) { sección actual = coincidencia de sección[1].trim(); if (!resultado[secciónactual]) resultado[secciónactual] = ; continuar; } const eqIdx = trimmed.indexOf('='); if (eqIdx > 0) { clave constante = trimmed.slice(0, eqIdx).trim(); dejar valor: cadena | número | booleano = recortado.slice(eqIdx + 1).trim(); si ((valor.startsWit h('"') && valor.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) si (valor === 'verdadero') valor = verdadero; de lo contrario si (valor === 'falso') valor = falso; else if (!isNaN(Número(valor)) && valor !== '') valor = Número(valor); if (!resultado[secciónactual]) resultado[secciónactual] = ; resultado[secciónactual][clave] = valor; } } return JSON.stringify(resultado, nulo, 2); } catch } función jsonToIni (entrada: cadena): cadena { intentar { const obj = JSON.parse (entrada); let ini = ''; for (const [sección, claves] de Object.entries(obj como Registro)) { ini += `[$] `; if (tipo de claves === 'objeto' && claves! == nulo) { for (const [clave, valor] de Object.entries (claves como Registro)) { ini += `$ =$ `; } } inicio += ' '; } return ini.trim(); } catch } /* -- Enrutador de conversión -- */ función convertir(de: Formato, a: Formato, entrada: cadena): cadena { if (de === a) return entrada; // CSV ↔ TSV si (de === 'csv' && a === 'tsv') return csvToTsv(input); si (de === 'tsv' && a === 'csv') devuelve tsvToCsv(entrada); // JSON ↔ XML si (de === 'json' && a === 'xml') return jsonToXml(input); si (de === 'xml' && a === 'json') devuelve xmlToJson(entrada); // Markdown ↔ HTML si (de === 'markdown' && a === 'html') return markdownToHtml(input); si (de === 'html' && a === 'markdown') devuelve htmlToMarkdown(input); // YAML ↔ JSON si (de === 'yaml' && a === 'json') return yamlToJson(input); si (de === 'json' && a === 'yaml') return jsonToYaml(input); // INI ↔ JSON si (de === 'ini' && a === 'json') return iniToJson(input); si (de === 'json' && a === 'ini') devuelve jsonToIni(entrada); return `Aún no se admite la conversión de $ a $.`; } /* -- Componente principal -- */ función de exportación ToolSection() { const [inputText, setInputText] = useState(''); const [textoSalida, setTextoSalida] = useState(''); const [fromFormat, setFromFormat] = useState ('csv'); const [toFormat, setToFormat] = useState ('tsv'); const [formato detectado, setDetectedFormat] = useState (nulo); const [copiado, setCopied] = useState(false); contras t [error, setError] = useState(''); const [mostrarDetalles, setShowDetails] = useState(false); const fileInputRef = useRef (nulo); const handleConvert = useCallback(() => { if (!inputText.trim()) setError(''); intente catch (e) { setError(`Error de conversión: $ `); 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).luego(() => ); }, [outputText]); const handleDownload = useCallback(() => { const formato = 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); }, [textodesalida,toFormato]); const handleFileUpload = useCallback((e: React.ChangeEvent ) => { const file = e.target.files?.[0]; if (!file) return; const lector = new FileReader(); lector.onload = (ev) => { const texto = ev.target?.result como cadena; setInputText(texto); const detectado = detectFormat(texto); setDetectedFormat(detectado); si (detectado) }; lector.readAsText(archivo }, []); const handleReset = useCallback(() =>, []); const fromConfig = ALL_FORMATS[fromFormat]; const toConfig = ALL_FORMATS[toFormat]; const FromIcon = fromConfig.icon; const ToIcon = toConfig.icon; return ( Convertidor de formato de archivo de {Object.entries(ALL_FORMATS).map(([value, f]) => ( ))} A {Object.entries(ALL_FORMATS).map(([value, f]) => ( ))} Detectar formato {detectedFormat && ( Detectado: )} {CONVERSION_PAIRS.slice(0, 5).map((pair) => ( } className= > ))} Entrada ( ) Cargar Salida ( ) {outputText && (Descargar)} Convertir para borrar {error && ( )} Conversiones admitidas {[ , , , , , ].map((item) => (
Detección de formato: la herramienta analiza el texto de entrada para adivinar el formato. Comprueba llaves JSON, etiquetas XML, pares clave-valor YAML, secciones INI, comas CSV, pestañas TSV y patrones de lista/encabezado Markdown.
CSV/TSV: intercambio de delimitador simple. CSV usa comas, TSV usa pestañas. Se conservan las filas.
JSON/XML: JSON se analiza en objetos y se serializa como XML con atributos escritos. XML se analiza con un analizador simple basado en expresiones regulares que maneja estructuras anidadas básicas.
Markdown/HTML: los encabezados de Markdown, negrita, cursiva, enlaces, bloques de código y listas se convierten en elementos HTML. HTML-to-Markdown invierte el proceso.
YAML/JSON: los pares clave-valor YAML (planos) se analizan en un objeto JSON. Los objetos JSON se serializan al formato YAML básico.
INI/JSON: las secciones INI se convierten en claves de objetos JSON. Los pares clave=valor se convierten en propiedades. JSON se serializa nuevamente al formato INI.
¿Por qué utilizar el conversor de formatos de archivos?
Convierta entre 8 formatos de archivos basados en texto al instante en su navegador: sin cargas, sin servidores, sin registro.
- Conversión bidireccional: convierta en ambas direcciones: CSV↔TSV, JSON↔XML, Markdown↔HTML, YAML↔JSON e INI↔JSON. Cambie formatos con un clic para revertir la conversión.
- Detección inteligente de formato: pegue cualquier texto y haga clic en "Detectar formato". La herramienta identifica automáticamente CSV, TSV, JSON, XML, Markdown, HTML, YAML o INI según los patrones de contenido. No es necesario especificar el formato de origen manualmente.
- Soporte para carga de archivos: cargue archivos directamente en lugar de copiarlos y pegarlos. El convertidor lee el contenido del archivo y detecta automáticamente el formato. Funciona con archivos .csv, .tsv, .json, .xml, .md, .html, .yaml, .ini y .txt.
- Copiar y descargar resultados: copie la salida convertida al portapapeles con un solo clic o descárguela como un archivo en el formato de destino. Cada formato utiliza su tipo MIME y extensión de archivo correctos para una integración perfecta.
Escenarios de conversión comunes
Supere las brechas de formato entre herramientas, lenguajes y plataformas con conversiones instantáneas.
- Migración de datos del desarrollador: convierta las respuestas de la API JSON a XML para la integración de sistemas heredados o transforme configuraciones XML a JSON para aplicaciones JavaScript modernas. CSV a JSON rápido para visualización de datos frontend.
- Preparación de datos de hojas de cálculo: convierta exportaciones CSV de Excel/Google Sheets a TSV para herramientas Unix, o transforme volcados de bases de datos TSV nuevamente a CSV para importar hojas de cálculo. Conserva todas las filas y columnas.
- Formato de documentos: convierta la documentación de Markdown a HTML para publicarla o elimine los correos electrónicos HTML para limpiar Markdown para el control de versiones. Funciona muy bien para archivos README, documentos y borradores de blogs.
- Gestión de configuración: convierta configuraciones YAML (Docker, Kubernetes, CI/CD) a JSON para procesamiento programático o transforme archivos INI (PHP, configuraciones antiguas de Windows) a JSON estructurado para herramientas modernas.
- Web Scraping y API: convierta HTML sin procesar extraído de páginas web a Markdown para una lectura limpia, o transforme las respuestas JSON API a YAML para archivos de configuración. Maneje los datos en cualquier formato que reciba.
- Intercambio de datos multiplataforma: cerrar las brechas de formato entre diferentes herramientas y plataformas. Convierta configuraciones INI a JSON para aplicaciones Node.js o transforme exportaciones de datos XML a CSV para partes interesadas no técnicas.
Acerca del convertidor de formato de archivo
Convierta entre CSV, TSV, JSON, XML, Markdown, HTML, YAML e INI, de forma instantánea y privada.
- ¿Qué es File Format Converter?: Una herramienta basada en navegador para convertir entre 8 formatos de archivos de texto comunes: CSV, TSV, JSON, XML, Markdown, HTML, YAML e INI. Los 5 pares de conversión son bidireccionales: convierta en cualquier dirección con un solo clic.
- Cómo funcionan las conversiones: CSV/TSV utiliza un intercambio de delimitadores simple. JSON/XML analiza datos estructurados y los serializa al formato de destino. Markdown/HTML convierte el marcado de texto en marcado web y viceversa. YAML/JSON maneja configuraciones de valores clave planos. INI/JSON transforma secciones de configuración estilo Windows en objetos estructurados.
- 100% privado y sin conexión: todas las conversiones se realizan en su navegador. No se envían datos a ningún servidor. Sin cargas, sin colas de procesamiento, sin API de terceros. Después de cargar la primera página, el convertidor funciona completamente sin conexión.
- Para desarrolladores y usuarios de datos: creado para desarrolladores de software, analistas de datos, redactores técnicos, ingenieros de DevOps y cualquier persona que trabaje con datos de texto estructurado. La detección de formato inteligente ahorra tiempo al identificar automáticamente su formato de entrada.