Конвертер форматов файлов
Мгновенно конвертируйте файлы между 8 распространенными текстовыми форматами. CSV↔TSV, JSON↔XML, Markdown↔HTML, YAML↔JSON и INI↔JSON — все двунаправленные, все в вашем браузере. Загрузите файлы или вставьте текст, автоматически определите формат и загрузите результаты.
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 ') // Горизонтальные правила .replace(/ /gi, '--- ') // Удаление оставшихся тегов .replace(/ ]+>/g, '') // Удаление лишних пробелов .replace(/ /g, ' ') .trim(); вернуть мд; } Функция yamlToJson(input: string): строка {попробуйте поймать} функция simpleYamlParse(yaml: string): Record {const result: Record =; constlines = yaml.split(' '); for (const строка строк) { const Trimmed = line.trim(); if (!trimmed || Trimmed.startsWith('#')) продолжить; const ColonIdx = Trimmed.indexOf(':'); if (colonIdx > 0)} вернуть результат; } Функция jsonToYaml(вход: строка): строка {попробуйте {const obj = JSON.parse(вход); функция toYaml (данные: неизвестно, отступ = ''): строка { if (data === null) return 'null '; if (typeof data === 'string') { if (data.includes(':') || data.includes('#') || data.includes(' ')) return `"$ " `; вернуть `$ `; } if (typeof data === 'number' || typeof data === 'boolean') return `$ `; if (Array.isArray(data)) { return data.map(item => `$ - $ `).join(' ') + ' '; } if (typeof data === 'object') { let yml = ''; for (const [key, val] of Object.entries(data as Record)) { if (typeof val === 'object' && val !== null && !Array.isArray(val)) { yml += `$ $ : $ `; } else if (Array.isArray(val)) { yml += `$ $ : `; for (const item of val) { yml += `$ - $ `; } yml += ''; } else { yml += `$ $ : $ `; } } Вернуть YML; } возвращаться ''; } Вернитесь в Yaml(obj).trim(); } catch } function iniToJson(input: string): string { try { const result: Record > = ; пусть currentSection = 'общий'; for (const line of input.split(' ')) { const Trimmed = line.trim(); if (!trimmed || Trimmed.startsWith(';') || Trimmed.startsWith('#')) продолжить; constsectionMatch = Trimmed.match(/^\[(.+)\]$/); если (sectionMatch) { currentSection =sectionMatch[1].trim(); if (!result[currentSection]) result[currentSection] = ; продолжать; } const eqIdx = Trimmed.indexOf('='); if (eqIdx > 0) { const key = Trimmed.slice(0, eqIdx).trim(); пусть значение: строка | номер | логическое значение = Trimmed.slice(eqIdx + 1).trim(); если ((value.startsWit h('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) if (value === 'true') value = true; иначе, если (значение === 'ложь') значение = ложь; else if (!isNaN(Number(value)) && value !== '') value = Number(value); if (!result[currentSection]) result[currentSection] = ; результат[currentSection][ключ] = значение; } } return JSON.stringify(result, null, 2); } catch } function jsonToIni(input: string): string { try { const obj = JSON.parse(input); пусть ini = ''; for (const [раздел, ключи] of Object.entries(obj as Record)) { ini += `[$] `; if (typeofkeys === 'object' &&keys !== null) { for (const [ключ, значение] of Object.entries(keys as Record)) { ini += `$ =$ `; } } ini += ''; } Возврат ini.trim(); } catch } /* -- Маршрутизатор преобразования -- */ function Convert(from: Format, to: Format, input: string): string { if (from === to) return input; // CSV ↔ TSV if (от === 'csv' && до === 'tsv') return csvToTsv(input); if (от === 'tsv' && до === 'csv') return tsvToCsv(input); // JSON ↔ XML if (от === 'json' && до === 'xml') return jsonToXml(input); if (от === 'xml' && до === 'json') return xmlToJson(input); // Markdown ↔ HTML if (от === 'markdown' && до === 'html') return markdownToHtml(input); if (от === 'html' && до === 'markdown') return htmlToMarkdown(input); // YAML ↔ JSON if (от === 'yaml' && до === 'json') return yamlToJson(input); if (от === 'json' && до === 'yaml') return jsonToYaml(input); // INI ↔ JSON if (от === 'ini' && до === 'json') return iniToJson(input); if (от === 'json' && до === 'ini') return jsonToIni(input); return `Преобразование из $ в $ пока не поддерживается.`; } /* -- Главный компонент -- */ функция экспорта ToolSection() { const [inputText, setInputText] = useState(''); const [outputText, setOutputText] = useState(''); const [fromFormat, setFromFormat] = useState ('csv'); const [toFormat, setToFormat] = useState ('tsv'); const [detectedFormat, setDetectedFormat] = useState (ноль); const [скопировано, setCopied] = useState (false); минусы т [ошибка, setError] = useState(''); const [showDetails, setShowDetails] = useState (false); const fileInputRef = useRef (ноль); const handleConvert = useCallback(() => { if (!inputText.trim()) setError(''); try catch (e) { setError(`Ошибка преобразования: $ `); setOutputText(''); } }, [inputText, fromFormat, toFormat]); const handleDetect = useCallback(() => { if (!inputText.trim()) const обнаружен = детекторFormat(inputText); setDetectedFormat(обнаружен); if (обнаружен) }, [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 = `converted$ `; a.click(); URL.revokeObjectURL(url); }, [выходной текст, 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 обнаружен =DetectFormat(text); setDetectedFormat(обнаружено); если (обнаружено) }; readAsText(файл }, []); const handleReset = useCallback(() =>, []); const fromConfig = ALL_FORMATS[fromFormat]; const toConfig = ALL_FORMATS[toFormat]; const FromIcon = fromConfig.icon; const ToIcon = toConfig.icon; return ( Конвертер формата файла из {Object.entries(ALL_FORMATS).map(([value, f]) => ( ))} В {Object.entries(ALL_FORMATS).map(([value, f]) => ( ))} Определить формат {detectedFormat && ( Обнаружено: )} {CONVERSION_PAIRS.slice(0, 5).map((pair) => ( } className= > ))} Ввод ( ) Загрузить Вывод ( ) {outputText && ( Загрузить )} Преобразовать в Очистить {ошибка && ( )} Поддерживаемые преобразования {[ , , , , , ].map((item) => (
Обнаружение формата: инструмент анализирует вводимый текст, чтобы угадать формат. Он проверяет фигурные скобки JSON, теги XML, пары ключ-значение YAML, разделы INI, запятые CSV, вкладки TSV и шаблоны заголовков/списков Markdown.
CSV/TSV: простая замена разделителей. В CSV используются запятые, в TSV — табуляция. Строки сохраняются.
JSON/XML: JSON анализируется на объекты и сериализуется как XML с типизированными атрибутами. XML анализируется с помощью простого анализатора на основе регулярных выражений, который обрабатывает базовые вложенные структуры.
Markdown/HTML: заголовки Markdown, жирный шрифт, курсив, ссылки, блоки кода и списки преобразуются в элементы HTML. HTML-to-Markdown обращает процесс вспять.
YAML/JSON: пары ключ-значение YAML (плоские) анализируются в объект JSON. Объекты JSON сериализуются в базовый формат YAML.
INI/JSON: разделы INI становятся ключами объекта JSON. Пары ключ=значение становятся свойствами. JSON сериализуется обратно в формат INI.
Зачем использовать конвертер форматов файлов?
Мгновенно конвертируйте файлы в 8 текстовых форматов в своем браузере — без загрузки, без серверов и без регистрации.
- Двунаправленное преобразование: конвертируйте в обоих направлениях: CSV↔TSV, JSON↔XML, Markdown↔HTML, YAML↔JSON и INI↔JSON. Поменяйте форматы одним щелчком мыши, чтобы отменить преобразование.
- Интеллектуальное определение формата: вставьте любой текст и нажмите «Определить формат» — инструмент автоматически определяет CSV, TSV, JSON, XML, Markdown, HTML, YAML или INI на основе шаблонов контента. Нет необходимости указывать исходный формат вручную.
- Поддержка загрузки файлов: загружайте файлы напрямую, а не копируйте их. Конвертер считывает содержимое файла и автоматически определяет формат. Работает с файлами .csv, .tsv, .json, .xml, .md, .html, .yaml, .ini и .txt.
- Копирование и загрузка результатов: Скопируйте преобразованный вывод в буфер обмена одним щелчком мыши или загрузите его в виде файла в целевом формате. В каждом формате используется правильный тип MIME и расширение файла для обеспечения плавной интеграции.
Распространенные сценарии конверсии
Устраните разрывы в форматах между инструментами, языками и платформами с помощью мгновенных преобразований.
- Миграция данных разработчика: конвертируйте ответы API JSON в XML для интеграции устаревших систем или преобразуйте конфигурации XML в JSON для современных приложений JavaScript. Быстрое преобразование CSV в JSON для визуализации данных внешнего интерфейса.
- Подготовка данных электронных таблиц: конвертируйте экспорт CSV из Excel/Google Sheets в TSV для инструментов Unix или преобразуйте дампы базы данных TSV обратно в CSV для импорта электронных таблиц. Сохраняет все строки и столбцы.
- Форматирование документа. Преобразуйте документацию Markdown в HTML для публикации или удалите электронные письма в формате HTML, чтобы очистить Markdown для контроля версий. Отлично работает с файлами README, документами и черновиками блогов.
- Управление конфигурациями: конвертируйте конфигурации YAML (Docker, Kubernetes, CI/CD) в JSON для программной обработки или преобразуйте файлы INI (PHP, старые конфигурации Windows) в структурированный JSON для современных инструментов.
- Веб-скрапинг и API: конвертируйте необработанный HTML-код, извлеченный из веб-страниц, в Markdown для более чистого чтения или преобразуйте ответы API JSON в YAML для файлов конфигурации. Обрабатывайте данные в любом формате, который вы получаете.
- Межплатформенный обмен данными: устранение разрывов в форматах между различными инструментами и платформами. Преобразуйте конфигурации INI в JSON для приложений Node.js или преобразуйте экспорт данных XML в CSV для заинтересованных сторон, не имеющих технических знаний.
О конвертере форматов файлов
Преобразование между CSV, TSV, JSON, XML, Markdown, HTML, YAML и INI — мгновенно и конфиденциально.
- Что такое конвертер форматов файлов?: Инструмент на основе браузера для преобразования между 8 распространенными текстовыми форматами файлов: CSV, TSV, JSON, XML, Markdown, HTML, YAML и INI. Все 5 пар преобразования являются двунаправленными — конвертируйте в любом направлении одним щелчком мыши.
- Как работают преобразования: CSV/TSV используют простую замену разделителей. JSON/XML анализирует структурированные данные и сериализует их в целевой формат. Markdown/HTML преобразует текстовую разметку в веб-разметку и обратно. YAML/JSON обрабатывают плоские конфигурации «ключ-значение». INI/JSON преобразует разделы конфигурации в стиле Windows в структурированные объекты.
- 100% конфиденциальность и офлайн: все конверсии происходят в вашем браузере. Никакие данные не отправляются ни на один сервер. Никаких загрузок, очередей обработки и сторонних API. После загрузки первой страницы конвертер работает полностью в автономном режиме.
- Для разработчиков и пользователей данных: создан для разработчиков программного обеспечения, аналитиков данных, технических писателей, инженеров DevOps и всех, кто работает со структурированными текстовыми данными. Интеллектуальное определение формата экономит время, автоматически определяя входной формат.