Конвертер JSON5 в CSV
Конвертируйте данные из JSON5 в CSV мгновенно, прямо во время ввода, в браузере.
Ввод
Вывод
Документация
Что представляют собой эти форматы данных?
Программы хранят и передают структурированные данные, например настройки, записи и списки, в текстовых форматах, каждый из которых записывает их по-своему. Конвертер пригодится, если одна программа выдает данные в формате, который другая не может прочитать, или если для конкретной задачи удобнее читать или редактировать данные в другом формате.
| Формат | Как записываются данные | Где встречается |
|---|---|---|
| JSON | Объекты в фигурных скобках, списки в квадратных, текст в двойных кавычках | Web API и настройки приложений |
| YAML | Строки ключ: значение с отступами, элементы списка начинаются с - |
Файлы Docker Compose, Kubernetes и конвейеров CI |
| XML | Элементы в тегах, у которых могут быть атрибуты | Документы, RSS-ленты и веб-службы SOAP |
| TOML | Строки ключ = значение под заголовками [таблица] |
Файлы конфигурации, например Cargo.toml и pyproject.toml |
| TOON | Строки с отступами, списки записей оформлены как строки под полями | Структурированные данные, передаваемые языковым моделям ИИ |
| CSV | Строка заголовка, затем по одной строке на запись, значения разделены запятыми | Электронные таблицы и экспорт баз данных |
| TSV | Как CSV, но значения разделены табуляцией | Ячейки, скопированные из электронной таблицы |
| MessagePack | Двоичные данные, на вкладке «Текст» представленные в виде шестнадцатеричных байтов | Компактные сообщения между программами |
| JSON5 | JSON, в котором также допускаются комментарии, одинарные кавычки и ключи без кавычек | Файлы конфигурации, написанные вручную |
| JSONL | По одному значению JSON в строке; также называется JSON Lines или NDJSON | Журналы и наборы данных |
| INI | Строки ключ = значение под заголовками [раздел] |
Файлы настроек программ, например php.ini |
| Properties | Строки ключ = значение с ключами, содержащими точки |
Приложения Java, например файлы application.properties в Spring Boot |
Описание инструмента
Этот инструмент преобразует данные между 12 форматами: JSON, YAML, XML, TOML, TOON, CSV, TSV, MessagePack, JSON5, JSONL, INI и Java Properties. Все конвертеры форматов данных здесь работают одинаково: от универсального конвертера форматов данных до конвертеров для отдельных пар форматов, например JSON в YAML, CSV в JSON или XML в JSON. При открытии в инструменте уже выбраны форматы, указанные в его названии, а в меню «Источник» и «Цель» можно выбрать любые другие.
Конвертеры принимают данные в виде текста, который вы вставляете или вводите, или в виде файлов и выдают текст или файлы. Выберите нужный вариант на вкладках «Файл» и «Текст» вверху на стороне источника и на стороне цели. Обе стороны открываются на вкладке «Текст».
- Текст на входе: вставьте или введите данные, и они будут преобразовываться по мере ввода.
- Файл на входе: выберите или перетащите один или несколько файлов. Кнопка «Выбрать файлы» показывает только файлы в исходном формате, но перетащенные файлы могут быть в любом из 12 форматов, и каждый из них преобразуется из формата, на который указывает его расширение, поэтому файл .yaml преобразуется как YAML даже в конвертере JSON в XML. Перетащенный файл с другим расширением, например .txt, преобразуется из исходного формата. Файлы в UTF-16 или в устаревшей кодировке, например Windows-1252, тоже читаются.
- Текст на выходе: результат появляется в редакторе кода с подсветкой синтаксиса — его можно сразу скопировать. Если преобразуется несколько файлов, в меню «Файл» над редактором можно выбрать, какой файл показан.
- Файл на выходе: преобразованные файлы появляются в сетке, у каждого своя кнопка «Скачать», и сохраняют свои имена с новым расширением. Кнопка «Скачать всё» сохраняет все преобразованные файлы в один ZIP-файл, а единственный преобразованный файл — как есть. Вставленные данные дают один файл с именем converted, например converted.yaml. Преобразованные файлы — это текст в UTF-8, кроме файлов MessagePack, которые двоичные.
Кнопка обмена меняет направление преобразования: целевой формат становится исходным, стороны меняются вкладками, а результат становится новыми входными данными.
Если входные данные некорректны для исходного формата, сообщение об ошибке укажет, что именно не так, обычно с номером строки и столбца, где возникла проблема. Для файлов сообщение об ошибке перечисляет файлы, которые не удалось преобразовать, а вкладка «Текст» на стороне цели показывает подробности для отображаемого на ней файла.
Данные преобразуются в браузере и никуда не загружаются.
Пример
Этот JSON:
{
"users": [
{ "id": 1, "name": "Ann", "admin": true },
{ "id": 2, "name": "Bo", "admin": false }
]
}преобразуется в этот YAML:
users:
- id: 1
name: Ann
admin: true
- id: 2
name: Bo
admin: falseв этот CSV, где каждая строка соответствует одному пользователю:
id,name,admin
1,Ann,true
2,Bo,falseи в этот TOON:
users[2]{id,name,admin}:
1,Ann,true
2,Bo,falseКак форматы соотносятся друг с другом
Форматы поддерживают разные типы данных, поэтому при некоторых преобразованиях действуют следующие правила:
- CSV и TSV хранят таблицу. В первой строке указаны названия столбцов, а каждая последующая строка становится объектом. Вложенные объекты превращаются в столбцы, названные по пути к ним, а списки в ячейках записываются как текст JSON. Например,
{"name": "Ann", "address": {"city": "Oslo"}, "tags": ["a", "b"]}преобразуется в столбцыname,address.cityиtags. При обратном преобразовании эти столбцы снова становятся вложенными объектами и списками. Если данные представляют собой объект с одним списком, например{"users": [...]}, строки соответствуют элементам этого списка, а список списков преобразуется в строки без заголовка. - Текстовые значения: CSV, TSV, XML, INI и Properties хранят только текст, поэтому конвертеры преобразуют
trueиfalseв логические значения, а числа, записанные в обычном виде, например42или3.5, — в числа. Значения вроде007,1.50или1e3остаются текстом, чтобы почтовые индексы и номера версий сохраняли исходный вид. - Атрибуты XML становятся ключами с префиксом
@, а текст элемента с атрибутами — значением#text:<price currency="USD">44.95</price>преобразуется в{"@currency": "USD", "#text": 44.95}. Повторяющиеся элементы становятся списком. При преобразовании в XML ключи с префиксом@снова становятся атрибутами. Если объект содержит один ключ, значением которого не является список, он становится корневым элементом. Остальные данные помещаются в элемент<root>, а каждый элемент списка верхнего уровня — в элемент<item>. Символы, недопустимые в именах XML, например пробелы, заменяются на_. - TOML, INI и Properties могут хранить только именованные значения на верхнем уровне, поэтому список записывается под именем
items, а отдельное значение — под именемvalue. В TOML нет значения null, поэтому такие значения пропускаются. - INI записывает вложенные объекты как разделы, например
[server.ssl], списки значений — как строкиключ[] = значение, а списки объектов — как разделы, названные по позиции элемента, например[users.0]. - В Properties вложенные имена объединяются точками, а элементы списков нумеруются в квадратных скобках, например
app.hosts[0], как это делает Spring Boot. При преобразовании в YAML или JSON такие ключи становятся вложенными объектами и списками, поэтому файлapplication.propertiesпреобразуется в структуру файлаapplication.yml. Символы за пределами Latin-1 записываются в виде escape-последовательностей\u. - В результатах YAML текст заключен в кавычки, если читатели YAML 1.1 могут принять его за что-то другое, например за
on,yesили дату. Это позволяет читателям YAML 1.1 и YAML 1.2 получать одинаковые данные. Файл YAML с несколькими документами, разделенными---, преобразуется в список этих документов, а merge-ключи<<раскрываются. - MessagePack — двоичный формат. В виде текста инструменты читают и записывают его как шестнадцатеричные байты:
{"a": 1}— это81 A1 61 01, а во входных данных допускаются пробелы, запятые и префикс0xперед каждым байтом. Файлы MessagePack, выбранные или сохраненные на вкладке «Файл», содержат сами байты, поэтому преобразованный файл .msgpack — двоичный. Несколько сообщений, записанных подряд, становятся списком. - В результатах JSONL каждый элемент списка записывается на отдельной строке.
- Целые числа, слишком большие для числового типа JavaScript, например 64-битные идентификаторы, сохраняются полностью, без потери цифр.
- Даты и время TOML, а также временные метки MessagePack преобразуются в текст, например
1979-05-27T07:32:00Z.
Советы
- Чтобы преобразовать ячейки электронной таблицы, скопируйте их и вставьте как TSV: приложения для работы с таблицами копируют ячейки в виде текста, разделенного табуляцией.
- CSV и TSV подходят для данных, представляющих собой список однотипных записей. Вложенные данные удобнее читать в YAML, TOML или TOON.
- Комментарии в файлах YAML, XML, TOML, JSON5, INI и Properties не сохраняются, поскольку конвертеры переносят только данные.