fixmint
UK

Конвертація CSV у JSON і назад без втрати даних

Автор: · · оновлено 8 листопада 2026 р. · 5 хв читання

CSV — це звичайна текстова таблиця: один запис на рядок, а поля розділені роздільником, зазвичай комою. Вона ламається, коли в полі є роздільник, подвійна лапка або перенос рядка, адже читач має відрізняти структуру від вмісту. Дотримуйтеся правил лапок, перевіряйте роздільник і рядок заголовків, а числа з провідними нулями зберігайте як текст. Далі в статті йдеться про те, що зберігає перетворення туди і назад, а що ні.

CSV у JSONПотрібно CSV як JSON або назадБезкоштовно

Що насправді являє собою файл CSV

Єдиного обов'язкового стандарту для CSV немає, але RFC 4180 описує поширену форму, і більшість програм її дотримується. Його основні правила вміщуються в короткий список:

  • Кожен запис розташований на окремому рядку, і RFC вказує, що рядки закінчуються поверненням каретки та переведенням рядка, CRLF.
  • Поля розділяються комами.
  • Поле, що містить кому, подвійну лапку або перенос рядка, береться в подвійні лапки.
  • Подвійна лапка всередині поля в лапках записується як дві подвійні лапки.

Отже, рядок 1001,"Smith, Ann",02134 має три поля, бо кома всередині лапок є вмістом. Програма, яка розрізає рядок по кожній комі, знайде чотири. Читач fixmint застосовує ці правила: поле в лапках може містити роздільник, переноси рядків і подвійні лапки, а незакриту лапку буде позначено з номером рядка, де вона починається.

Чому змінюється роздільник

Кома є стандартним роздільником за RFC, але там, де кома є десятковим знаком, тобто 1,5 означає півтора, таблиці часто зберігаються в CSV із крапкою з комою. Файли з табуляцією (TSV) уникають конфлікту в більшості даних, бо табуляції рідко трапляються всередині тексту.

Меню Delimiter пропонує Auto, Comma, Semicolon, Tab і Pipe. Auto читає перші десять рядків, підраховує кожного кандидата поза лапками і обирає той, чия кількість на рядок найстабільніша. Якщо Auto вгадує неправильно, виберіть роздільник самостійно.

Конвертація у fixmint

У прикладі використано типові налаштування інструмента CSV у JSON.

Приклад

Вставте цей CSV із увімкненою опцією First row is a header:

id,name,zip,note
1001,"Smith, Ann",02134,"She said ""hi"""
1002,Bo,10001,"line one
line two"

Коли Convert numbers вимкнено, а відступ JSON встановлено 2 пробіли, інструмент повертає:

[
  {
    "id": "1001",
    "name": "Smith, Ann",
    "zip": "02134",
    "note": "She said \"hi\""
  },
  {
    "id": "1002",
    "name": "Bo",
    "zip": "10001",
    "note": "line one\nline two"
  }
]

Коли Convert numbers увімкнено, id і zip 10001 стають числами, а 02134 залишається текстом.

Кроки

  1. Вставте CSV або перетягніть файл .csv, .tsv, .txt чи .json.
  2. Перевірте First row is a header, Delimiter і Convert numbers. Оберіть відступ JSON 2 пробіли, Tab або Minified.
  3. Скопіюйте результат або завантажте його як .json.

Зберігайте числа як текст

Числа в JSON не можуть мати провідних нулів, тож 02134 не є допустимим числом JSON. Поштові індекси, номери телефонів і коди товарів мають залишатися текстом, інакше нуль зникне. Коли Convert numbers увімкнено, інструмент перетворює 10001, але зберігає 02134 як рядок. Опція за замовчуванням вимкнена. Вона перетворює лише значення з крапкою як десятковим знаком, тож 1,5 у файлі з крапкою з комою залишиться таким, як був введений.

Довгі ідентифікатори також потребують уваги. JavaScript, на якому працює більшість JSON у браузері, зберігає числа як 64-бітні значення з плаваючою комою. Цілі числа точно відтворюються лише до 9 007 199 254 740 991, тобто до двох у 53-му степені мінус 1. Число 12345678901234567890 стає 12345678901234567000, коли його читає програма на JavaScript. Інструмент записує цифри так, як їх введено, але програма, що розбирає JSON у JavaScript, округлить їх. Зберігайте ідентифікатори як рядки. Форматувальник JSON також зберігає такі числа точно, як введені, і повідомляє, скільки їх збережено.

Вкладений JSON і повернення до CSV

CSV є плоским, а JSON може бути вкладеним. Перетворення JSON у CSV створює один стовпець для кожного ключа в усіх об'єктах, у порядку, в якому ключ уперше з'являється. Вкладений об'єкт або список потрапляє в клітинку як текст JSON, null стає порожньою клітинкою, а true і false записуються словами. Рядки з'єднуються через CRLF, а поле береться в лапки лише тоді, коли містить роздільник, лапку, перенос рядка або пробіли на одному з країв.

Вхід, що починається з [ або {, читається як JSON. Кнопка-перемикач змінює напрямок і має напис CSV → JSON або JSON → CSV. У напрямку JSON → CSV параметри виводу показують меню Delimiter і опцію For Excel.

Перетворення туди і назад втрачає інформацію. Null і порожній рядок стають однаковою порожньою клітинкою, а вкладеність не відновлюється, тому зберігайте початковий JSON, якщо вам потрібна його структура.

Excel, UTF-8 і BOM

Файл CSV — це байти, і читач мусить знати кодування. UTF-8 підтримує літери з діакритикою та інші алфавіти. Мітка порядку байтів (BOM), три байти на початку файлу, позначає файл як UTF-8. Без неї деякі табличні програми читають файл у локальній кодовій сторінці, і літери з діакритикою перетворюються на дивні символи. Табличні програми також часто перетворюють 02134 на 2134, коли відкривають CSV.

Опція For Excel додає BOM лише до завантаженого CSV, ніколи до скопійованого тексту, і лише в напрямку JSON → CSV. Читач видаляє BOM із вхідних даних, тож файл, який її вже має, конвертується без помилок.

Окремі випадки

  • Рядки різної довжини. Коли заголовок увімкнено, короткий рядок доповнюється порожніми значеннями, а довший зберігає зайві значення як column_N. У результаті вказано, скільки рядків відрізняються від заголовка.
  • Повторювані або порожні заголовки. Повторена назва отримує суфікси _2, _3 тощо, а порожня назва стає column_N. Ці зміни не дають двом ключам перезаписувати один одного.
  • Фігурні лапки. Розумні лапки з текстового процесора не є лапками CSV, тому поле на кшталт “Smith, Ann” розділиться по комі. Спочатку випряміть їх за допомогою виправлення вставленого тексту або як описано в посібнику про фігурні лапки.
  • Переноси рядків у лапках. Поле, що займає два рядки, є одним записом, але видалення дублікатів рядків розбиває вхідні дані по кожному переносу рядка, тож сприйме обидві половини як окремі рядки. Перетворіть на JSON і порівняйте об'єкти або перевірте вручну. Інструмент залишається корисним для списків із одним значенням на рядок.
  • Великі файли. У полі результату показано перші 100 000 символів, але Copy і завантаження містять увесь вивід.
  • Некоректний JSON. Конвертер повідомляє рядок і стовпець помилки та ставить вказівник під символом. Форматувальник JSON пояснює типові помилки, а посібник із помилок JSON розглядає їх докладніше.

Зайві пробіли навколо полів, порожні рядки посеред файлу та непослідовне використання лапок спричиняють більшість проблем із CSV ще до того, як роздільник має значення. Очистіть CSV, а потім конвертуйте.

Переклад з Англійський оригінал за допомогою ШІ.

Коментарі

    Коментарів поки немає. Будьте першим.

    Ваша оцінка (необов’язково)

    Ваша пошта ніколи не показується і не зберігається.

    Обкладинка: How to Remain Valuable When Intelligence Becomes CheapHow to Remain Valuable When Intelligence Becomes Cheap

    224 сторінки про людські, економічні та стратегічні переваги, які залишаються рідкісними, коли ШІ може виконувати більшість когнітивної роботи.

    $3.84Придбати на GumroadАнглійською