CSV у JSON
Перетворити таблицю CSV на масив об'єктів
Дані не залишають ваш браузер
Цей інструмент повністю працює на вашому пристрої: обчислення виконує JavaScript у вкладці. Ми не надсилаємо введений текст на сервер, не зберігаємо і не логуємо його. Можете сміливо працювати з робочими даними - і навіть відключити інтернет після завантаження сторінки.
Навіщо конвертувати CSV
CSV - формат, у якому дані приходять від бухгалтерії, з експорту CRM, з Google Sheets. Щоб згодувати їх імпортеру, сідеру чи API, зручніше мати масив об'єктів, де колонки стали ключами.
Як це працює тут
Перший рядок за замовчуванням вважається заголовком, і його значення стають ключами. Вимкніть галочку - і кожен рядок перетвориться просто на масив значень.
Парсер розуміє лапки: кома всередині "Петро, Іванович" не розділяє поле. Подвоєні лапки "" всередині значення перетворюються на одну - як вимагає RFC 4180.
Роздільник
Попри назву, CSV далеко не завжди comma-separated. Український Excel зазвичай зберігає з крапкою з комою, бо кома в наших локалях - десятковий роздільник. Якщо результат виглядає як один стовпчик - перемкніть роздільник.
Підводні камені CSV
BOM на початку файлу. Excel часто дописує невидимі байти EF BB BF, і перший ключ стає name замість name. У PHP:
$content = file_get_contents($path);
$content = ltrim($content, "\xEF\xBB\xBF");
Кодування. Український Excel досі любить Windows-1251. Якщо замість літер «кракозябри» - файл треба перекодувати:
$content = mb_convert_encoding($content, 'UTF-8', 'Windows-1251');
Переноси рядків усередині поля. Значення в лапках може містити \n. Цей інструмент такі поля не підтримує - для них потрібен повноцінний парсер на сервері.
У PHP і Laravel
// Потокове читання: файл не піднімається в пам'ять цілком
$handle = fopen($path, 'r');
$header = fgetcsv($handle, separator: ';');
while (($row = fgetcsv($handle, separator: ';')) !== false) {
$data = array_combine($header, $row);
// ...
}
fclose($handle);
// Імпорт великого файлу: чанками, а не по одному рядку
collect($rows)
->chunk(500)
->each(fn ($chunk) => City::insert($chunk->all()));
Для складних імпортів у Laravel зазвичай беруть league/csv - він коректно обробляє і переноси в полях, і кодування, і потоки.
- Де виконується
- у браузері
- Категорія
- Дані та формати