Що таке конвертація JSON у Excel (XLSX)?
Сторінка дозволяє завантажити один файл у форматі JSON та отримати на виході файл XLSX — рідний формат Microsoft Excel. Процес не просто змінює розширення. Оскільки JSON має гнучку ієрархічну структуру (об'єкти, масиви, числа, рядки, булеві значення та null), а Excel-таблиця є пласким сіткою з рядків і стовпців, перед записом у XLSX необхідно виконати сплощення (flatten) ієрархії.
Інструмент приймає лише «табличний» JSON: масив об'єктів (кожен об'єкт стає рядком, ключі — заголовками стовпців) або масив масивів (рядки зберігаються як є). Якщо ваш JSON містить один об'єкт, його також буде оброблено як масив з одного елемента, але якщо файл починається з простого скалярного значення (наприклад, рядка чи числа), конвертація не вдасться — з'явиться повідомлення: «This JSON is invalid or not table‑shaped».
Після успішної обробки ви бачите попередній перегляд таблиці (перші 8 рядків і 8 стовпців), кількість рядків і стовпців, а також розмір готового XLSX-файлу. Потім його можна завантажити на комп'ютер. Важливо: конвертація виконується повністю на стороні клієнта — жоден файл не передається на сервер. Це гарантує приватність даних. Файл не повинен перевищувати 8 МБ. Якщо файл більший, з'явиться повідомлення: «This file is too large. Use a file under {max}». Максимальна кількість рядків — 10 000, стовпців — 200. Конвертація, що триває понад 12 секунд, буде зупинена з повідомленням: «Конвертація триває занадто довго. Спробуйте використати менший файл.».
Чому ця сторінка відрізняється від інших інструментів?
На перший погляд, конвертація JSON у таблицю здається простою — достатньо взяти ключ першого рівня як заголовки, а значення як комірки. Але реальність складніша через дві особливості:
-
JSON — вкладена структура. Об'єкти можуть містити інші об'єкти, масиви об'єктів або масиви примітивів. Жодна пласка таблиця не може безпосередньо відобразити таку ієрархію. Інструмент застосовує детерміноване сплощення: ключі вкладених об'єктів об'єднуються крапкою (dot‑path). Наприклад,
{"address": {"city": "Київ"}}у таблиці матиме стовпецьaddress.cityзі значенням «Київ». Така схема не потрібна при конвертації з CSV чи XLSX, які вже є пласкими. -
Збереження типів даних. XLSX — це zip-архів, який містить XML-файли з описом робочої книги. Всередині комірки можуть мати різні числові формати:
general,number,booleanтощо. На відміну від CSV (де все стає рядками), цей інструмент зберігає числа як числа, булеві значення якTRUE/FALSEв комірках, аnull— як порожню комірку. Це критично для подальшого аналізу в Excel, де числа потрібні для формул, а не текст.
Таким чином, сторінка не просто «перепаковує» файл — вона вирішує проблему сплощення та відновлення типової інформації, яку втрачають інші формати.
Як відбувається сплощення ієрархічного JSON
Розглянемо приклад типових сценаріїв:
Масив об'єктів з вкладеними полями:
[
{
"id": 1,
"name": "Олексій",
"contacts": {
"email": "alex@example.com",
"phone": "+380501234567"
}
},
{
"id": 2,
"name": "Марія",
"contacts": {
"email": "maria@example.com",
"phone": null
}
}
]
Результатна таблиця матиме стовпці: id, name, contacts.email, contacts.phone. Другий рядок матиме порожню комірку в contacts.phone (тому що значення null).
Масив масивів (рядки без ключів):
[
["Київ", 3_000_000],
["Львів", 720_000]
]
Тут інструмент створить заголовки за зразком 0, 1 (індекси масиву). Головне, що структура залишається плоскою.
Правила роботи з вкладеними масивами: якщо всередині об'єкта є масив об'єктів, то за замовчуванням інструмент не розкладає цей масив на додаткові рядки. Наприклад:
[
{
"order": 1,
"items": ["a", "b"]
}
]
Масив items не буде перетворено на окремі рядки для кожного елемента. Таблиця отримає стовпець items, значенням якого буде рядкове представлення масиву (наприклад, ["a","b"]). Це обмеження пласкої таблиці: один рядок не може мати змінну кількість значень для одного стовпця. Якщо вам потрібно розгорнути масиви в окремі рядки, доведеться попередньо модифікувати JSON.
Типи даних у JSON та Excel (XLSX)
JSON визначає шість типів: рядок, число, булеве, null, об'єкт, масив. Для конвертації в XLSX важливі примітиви:
- Число (цілі або з плаваючою крапкою) — записується в комірку з числовим типом. Excel зберігає число в двійковому вигляді, що дозволяє використовувати формули, сортування, числові фільтри.
- Булеве (
true/false) — в XLSX зберігається як логічне значення (TRUE/FALSE). - Null — обробляється як порожня комірка.
- Об'єкт (якщо всередині значення) — сплощується через dot-path. Наприклад
{"x": 1, "y": 2}стає двома окремими стовпцямиxтаy. - Масив (як значення ключа) — перетворюється на рядкове представлення
[...]і записується як текст.
Ця різниця в обробці типів робить XLSX більш придатним для подальшого аналізу даних, ніж CSV, особливо коли ви маєте справу з великими наборами чисел або логічними прапорцями.
Обмеження та крайові випадки
Інструмент має чітко визначені правила та повідомлення про помилки, які допомагають зрозуміти, чому конвертація не відбулася.
Повідомлення про помилки (дослівно з фактів):
- «Choose a CSV, JSON or XLSX file.»
- «This file is too large. Use a file under ‹max›.»
- «This JSON is invalid or not table‑shaped.»
- «This file has no table rows.»
- «Конвертація триває занадто довго. Спробуйте використати менший файл.»
- «Conversion cancelled.»
Важливі обмеження:
- Обробляється лише один аркуш (worksheet). Жодних формул, стилів або додаткових аркушів із JSON не переноситься. Якщо ви очікували, що вкладений масив створить автоматично новий аркуш — цього не станеться.
- Формули Excel не обчислюються. Інструмент записує лише статичні значення (числа, текст, логічні), а не формули типу
=SUM(A1:A10). - Після завантаження XLSX у Excel ви можете вільно додавати формули, форматування та інші аркуші — це вже не стосується інструменту.
Кому це потрібно
- Розробники, які отримують дані з API у форматі JSON і хочуть проаналізувати їх у звичному табличному редакторі. Замість написання скрипта на Python чи Node.js для сплощення, можна скористатися цим інструментом за секунду.
- Аналітики даних, яким потрібно зберегти типи чисел і булевих значень при експорті. У CSV всі числа стають текстом, що ускладнює подальшу обробку (наприклад, середнє значення необхідно перетворювати з рядка). XLSX зберігає типаж.
- Команди, що співпрацюють: один колега працює з JSON-логом сервера, інший — виключно з Excel. Інструмент долає цю невідповідність без посередників.
- Випадкові користувачі, які мають невеликий JSON-файл (наприклад, конфігурацію або експорт із CRM) і хочуть швидко переглянути його в Excel без встановлення додаткового ПЗ.
Часті питання (FAQ)
1. Чи можна конвертувати JSON із глибоко вкладеними масивами об'єктів? Так, але всі вкладені об'єкти розгортаються в окремі стовпці з крапковими шляхами. Вкладені масиви як значення ключа перетворюються на текст. Якщо потрібно, щоб кожен елемент масиву став окремим рядком, необхідно попередньо перетворити JSON на масив об'єктів.
2. Чому я отримую помилку «This JSON is invalid or not table‑shaped»?
Найчастіше це означає, що кореневий елемент JSON не є масивом. Наприклад, один об'єкт {...} або скаляр "рядок" не вважаються табличними. Інший випадок — структура, де масив містить різнотипні елементи (наприклад, змішані об'єкти і рядки). Виправте JSON так, щоб він був масивом об'єктів або масивом масивів.
3. Чи зберігаються формули Excel, якщо я конвертуватиму JSON, який містить вирази на зразок =SUM(...)?
Ні. Інструмент ігнорує будь-які формули в JSON (фактично вони є рядками) і записує їх як звичайний текст. Після завантаження XLSX ви можете вручну застосувати формули.
4. Який максимальний розмір JSON-файлу? Максимальний розмір файлу становить 8 МБ. Якщо файл дуже великий, спробуйте розбити його на частини або видалити непотрібні поля. Якщо конвертація триває надто довго, інструмент перерве її з помилкою «Конвертація триває занадто довго. Спробуйте використати менший файл.».
5. Чи можна конвертувати кілька JSON-файлів одночасно? Ні. Інструмент приймає лише один файл за раз. Для кількох файлів потрібно виконувати конвертації окремо.
6. Чому в результуючому XLSX з'являються стовпці з назвами на кшталт order.items.0.name?
Це результат сплощення масиву об'єктів, де кожен об'єкт має однакову структуру. Наприклад, якщо у вас {"order": {"items": [{"name": "A"}, {"name": "B"}]}}, то інструмент створить стовпці order.items.0.name та order.items.1.name. Якщо масиви різної довжини, частина стовпців може містити пусті комірки. Це природна плата за пласку таблицю.