JSON и CSV являются двумя наиболее распространёнными способами хранения и передачи структурированных данных, и большинство людей, работающих с данными, постоянно сталкиваются с выбором между ними: API передаёт JSON, таблица ожидает CSV, а скрапер обычно может выдать и то, и другое. Они выглядят взаимозаменяемыми на маленьких примерах, но делают противоположные компромиссы, и выбор неподходящего формата проявляется позже в виде раздутых файлов, потерь при экспорте или кода парсинга, борющегося с форматом.

Этот материал излагает, чем на самом деле является каждый формат, сравнивает их по важным измерениям (структура, читаемость, вложенность, размер, инструменты и типичное применение), а затем даёт чёткое правило выбора. К концу вы сможете взглянуть на набор данных и за секунды понять, какой формат подходит, и как конвертировать между ними при необходимости.

JSON vs CSV с первого взгляда

Краткая версия: JSON, это вложенный, самоописывающий формат, созданный для программ и API, тогда как CSV, это плоский табличный формат, созданный для таблиц и простых данных в строках и столбцах. JSON несёт собственную структуру и типы данных; CSV, это просто текст, разделённый запятыми. Вот как два формата сравниваются по измерениям, которые обычно определяют выбор.

Измерение JSON CSV
Структура Вложенная и иерархическая (объекты и массивы) Плоская и табличная (строки и столбцы)
Читаемость Самоописывающий через пары ключ-значение; понятен при отступах Компактный, но теряет контекст по мере роста и при значениях с запятыми
Вложенность Встроенная поддержка объектов внутри объектов и массивов Отсутствует; вложенные данные нужно выравнивать или кодировать как строку
Типы данных Строки, числа, булевы, null, массивы, объекты Только простой текст и числа; всё остальное является строкой
Размер файла Больше; повторяет ключи и добавляет фигурные и квадратные скобки Меньше; нет структурных символов помимо разделителя
Инструменты API, языки программирования, веб и мобильные приложения Excel, Google Sheets, базы данных, pandas
Типичное применение Ответы API, динамические и многоуровневые данные Экспорты, анализ, обмен плоскими данными

Почти каждое другое различие между этими двумя форматами вытекает из первой строки. JSON вкладывает, CSV, нет, и всё остальное (размер, поддержка типов, какие инструменты его открывают) является следствием этого одного структурного факта.

Что такое JSON?

JSON (JavaScript Object Notation), это лёгкий формат обмена данными, ставший краеугольным камнем современной веб-разработки. Он начинался как подмножество JavaScript, но теперь является языконезависимым, поддерживается практически каждым языком программирования, что и сделало его стандартным способом взаимодействия сервисов между собой.

JSON представляет данные в виде пар ключ-значение, и эти пары могут вкладываться. Значение может быть строкой, числом, булевым, null, массивом или другим объектом, поэтому JSON может описывать сложные иерархические записи в одном документе. Небольшой пример:

json
{
  "name": "John Doe",
  "age": 30,
  "skills": ["JavaScript", "Python", "SQL"],
  "address": {
    "city": "New York",
    "zip": "10001"
  }
}

Обратите внимание, как skills содержит массив, а address содержит другой объект. Именно способность представлять объекты, массивы и вложенные отношения в одном самоописывающем документе делает JSON стандартом для API и веб-приложений. Где его обычно встречают:

  • API. JSON является наиболее распространённым форматом обмена данными в API, обеспечивая чистую коммуникацию между клиентом и сервером.
  • Веб-разработка. Frontend и backend системы полагаются на JSON для динамической передачи структурированных данных.
  • Обмен данными между системами. Его компактная и легко парсируемая форма упрощает обмен между мобильными приложениями, базами данных и веб-сервисами.

Что такое CSV?

CSV (Comma-Separated Values), один из простейших и наиболее широко используемых форматов для хранения структурированных данных. Его простая конструкция сделала его незаменимым для организации данных в строках и столбцах, подобно таблице в электронной таблице.

CSV-файл представляет данные в плоской табличной структуре: каждая строка является записью, а каждый столбец, полем, причём значения разделены запятыми (или иногда табуляциями или точками с запятой). Базовый пример:

csv
Name,Age,Skills,City
John Doe,30,JavaScript;Python;SQL,New York
Jane Smith,25,HTML;CSS,Los Angeles

В отличие от JSON, CSV не организован иерархически и реально хранит только простой текст и простые числа. Обратите внимание на столбец Skills выше: список пришлось упихнуть в одну ячейку с разделителем «точка с запятой», поскольку у CSV нет собственного способа выразить список. Эта простота также является его силой, делая CSV простым в генерации, парсинге и обмене. Где его обычно встречают:

  • Электронные таблицы. Такие инструменты, как Microsoft Excel и Google Sheets, по умолчанию импортируют и экспортируют CSV.
  • Базы данных. CSV является распространённым способом переноса данных между базами данных или заполнения новых таблиц.
  • Лёгкий обмен данными. Поскольку файлы компактны и удобны для редактирования, CSV удобен для передачи данных между командами и платформами.

Ключевые различия между JSON и CSV

Таблица выше является быстрым справочником. Стоит пройтись по основным измерениям немного подробнее, поскольку каждое из них указывает на реальное решение, с которым вы столкнётесь.

Структура: иерархическая против плоской

JSON поддерживает вложенные структуры, поэтому может напрямую представлять иерархические отношения: массивы внутри объектов, объекты внутри объектов, на любую необходимую глубину. CSV строго плоский и табличный. Он не может выражать вложенность или отношения, поэтому всё иерархическое нужно выравнивать в дополнительные столбцы или кодировать в одну ячейку как строку. Это различие порождает все остальные.

Читаемость: самоописывающий против компактного

JSON читаем и интуитивно понятен при отступах, поскольку каждое значение находится рядом с ключом, который его называет; форму записи можно понять с первого взгляда. CSV более компактен, но полагается на позицию столбца, а не на метки, поэтому большие файлы трудно воспринимать, а значения, сами содержащие запятые, нужно заключать в кавычки или экранировать для сохранения парсируемости.

Размер файла: накладные расходы против эффективности

JSON обычно больше, поскольку повторяет ключи на каждой записи и добавляет фигурные скобки, квадратные скобки и кавычки. Эти накладные расходы накапливаются на тысячах строк. CSV лёгкий: он записывает заголовок один раз, а затем несёт только значения и разделители, поэтому для больших плоских наборов данных он заметно меньше на диске и быстрее перемещается.

Типы данных: богатые против простых

JSON различает строки, числа, булевы, null, массивы и объекты, и парсеры точно восстанавливают эти типы. CSV хранит всё как текст. Читатель должен определять, что 30, это число или что true, это булево, а сложные значения приходится выравнивать или кодировать как строки, что усложняет парсинг при обратной конвертации.

Инструменты и типичное применение

JSON является языком API, веб и мобильных приложений и любого сценария с многоуровневыми или динамическими данными; он чувствует себя как дома везде, где потребителем является программа. CSV, язык электронных таблиц и анализа: импортируйте его в Excel, Google Sheets или pandas и за секунды вы уже работаете с данными. Выбор формата часто просто определяется тем, что будет открывать файл дальше.

Crawlbase Crawling API

При сборе данных, а не только их хранении, вопрос формата возникает на этапе вывода. Crawlbase Crawling API и Crawling API берут на себя рендеринг, ротацию IP и обходы блокировок, а затем возвращают чистые результаты, которые можно сохранить как JSON для последующего кода или выгрузить в CSV для электронной таблицы, так что вы выбираете формат, подходящий для следующего шага, а не возитесь с сырым HTML.

Когда использовать JSON

JSON, правильный выбор всякий раз, когда данные структурированы, иерархичны или предназначены для программы, а не для человека. Наиболее очевидные случаи:

  • Интеграции API. JSON является стандартом для API именно потому, что представляет сложные вложенные данные. REST-эндпоинт, возвращающий пользователя со списком заказов, является естественным вариантом: заказы вложены внутрь пользователя, выравнивания не требуется.
  • Динамические приложения. Веб и мобильные приложения, обновляющие данные на лету, опираются на JSON, которому способствует то, как чисто он сопоставляется с объектами JavaScript. Чат-приложение, отправляющее каждое сообщение с метаданными (временная метка, статус прочтения), является типичным примером.
  • Иерархические данные. Каждый раз, когда записи имеют отношения родитель-потомок или один-ко-многим, JSON хранит и извлекает их без ухищрений.

Если в данных есть любая глубина или потребителем является другой программный компонент, по умолчанию выбирайте JSON. Подробнее о работе с ним в коде см. в нашем руководстве по парсингу данных в Python и более широкому рабочему процессу в скрапинге сайта с Python.

Когда использовать CSV

CSV побеждает, когда данные плоские, потребителем является электронная таблица или аналитик, а размер или простота важнее структуры. Наиболее очевидные случаи:

  • Анализ данных. CSV загружается прямо в Excel, Google Sheets или pandas, что делает его идеальным для быстрого изучения данных о продажах, демографии клиентов или результатов опросов.
  • Экспорты таблиц. Когда данные нужно открыть или поделиться в программах для электронных таблиц, CSV является универсальным форматом импорта и экспорта. Экспорт таблицы базы данных для офлайн-просмотра, канонический пример.
  • Простой обмен данными. Когда записи не имеют вложенности и только базовые типы, CSV перемещает их эффективно. Передача списка email-подписчиков между двумя маркетинговыми инструментами, хороший пример.

Если данные естественно помещаются в таблицу, а следующей остановкой является человек или электронная таблица, CSV меньше, проще и достаточно хорош. Как только вы обнаруживаете, что кодируете список в одну ячейку, это сигнал о том, что вы переросли CSV и хотите JSON вместо него.

Быстрое правило

Данные вложены или их потребляет программа? Используйте JSON. Они плоские, и их откроет электронная таблица или аналитик? Используйте CSV. Большинство реальных решений сводится к этим двум вопросам.

Как конвертировать между JSON и CSV

Вы редко навсегда привязываетесь к одному формату. API возвращает JSON, но заинтересованной стороне нужна таблица; CSV-экспорт должен стать полезной нагрузкой API. Конвертация между ними является рутинной задачей, с которой справляются несколько инструментов:

  • Python-библиотеки. Библиотеки pandas, json и csv охватывают большинство конвертаций несколькими строками кода.
  • Онлайн-конвертеры. Сайты вроде JSON2CSV быстро обрабатывают меньшие наборы данных без кода.
  • Программы для работы с таблицами. Excel и Google Sheets могут импортировать JSON (с плагином или скриптом) и экспортировать в CSV.
  • Пользовательские скрипты. Написание собственного на Python или JavaScript даёт полный контроль над тем, как вложенные поля выравниваются или восстанавливаются.

Единственное, на что нужно обратить внимание, это вложенность. Переход от JSON к CSV означает выравнивание: вложенные объекты становятся именами столбцов с точкой, а массивы объединяются или разделяются по строкам, поэтому глубоко вложенные данные могут не очень чисто отображаться в плоскую таблицу. Обратный путь без потерь, поскольку плоские строки всегда помещаются в JSON. Вот круговой маршрут с pandas:

python
import pandas as pd

json_data = [
    {"name": "John Doe", "age": 30},
    {"name": "Jane Smith", "age": 25},
]

# JSON to CSV: flatten, then write the table
df = pd.json_normalize(json_data)
df.to_csv("output.csv", index=False)

# CSV to JSON: read the table, dump records
df = pd.read_csv("output.csv")
df.to_json("output.json", orient="records", indent=4)

json_normalize является ключевым элементом при переходе от JSON к CSV: он выравнивает вложенные ключи в столбцы, чтобы иерархическая запись поместилась в плоскую таблицу. Для данных с массивами или глубокой вложенностью вам, возможно, придётся решать для каждого поля, выравнивать ли его, объединять ли в одну ячейку или разделять по строкам.

Итоги

Ключевые выводы

  • Структура, всё различие. JSON вкладывает; CSV плоский. Каждый другой компромисс вытекает из этого одного факта.
  • JSON для программ и вложенных данных. API, веб и мобильные приложения и любая запись с иерархией или богатыми типами данных.
  • CSV для электронных таблиц и плоских данных. Анализ, экспорты и простой обмен, где размер и простота побеждают.
  • Компромиссы по размеру и типам реальны. JSON повторяет ключи и сохраняет типы; CSV меньше, но рассматривает всё как текст.
  • Конвертация рутинна, но следите за вложенностью. Выравнивание JSON в CSV может потерять структуру; CSV в JSON без потерь. Инструменты вроде pandas выполняют круговой маршрут за несколько строк.

Часто задаваемые вопросы

Что лучше: JSON или CSV?

Ни один не лучше в целом; они подходят для разных задач. JSON лучше для вложенных данных и программного обмена, например API. CSV лучше для плоских табличных данных, направляемых в электронную таблицу или аналитический инструмент. Сопоставьте формат со структурой данных и с тем, что будет открывать их дальше.

Почему JSON больше, чем CSV?

JSON повторяет каждый ключ на каждой записи и добавляет фигурные скобки, квадратные скобки и кавычки для выражения структуры. CSV записывает имена столбцов один раз в заголовок, а затем несёт только значения и разделители. Для больших плоских наборов данных эти накладные расходы делают JSON заметно больше на диске, чем эквивалентный CSV.

Может ли CSV хранить вложенные данные?

Не нативно. CSV строго плоский, поэтому вложенные объекты и массивы нужно выравнивать в дополнительные столбцы или кодировать в одну ячейку как строку (например, список, объединённый точками с запятой). Если в данных есть реальная иерархия, JSON представляет её намного чище.

Как конвертировать JSON в CSV на Python?

Самый простой путь, pandas: загрузите JSON, вызовите pd.json_normalize() для выравнивания вложенных ключей в столбцы, затем запишите результат с помощью df.to_csv(). При сложной вложенности может потребоваться решить для каждого вложенного поля, как оно должно отображаться в столбцы перед выравниванием.

Какой формат быстрее парсить?

CSV обычно быстрее и легче парсить для простых плоских данных, поскольку структуры для интерпретации немного. Парсинг JSON делает больше работы, поскольку восстанавливает вложенные объекты и типизированные значения, но именно эта работа вам и нужна, когда данные иерархические. Скорость сама по себе редко определяет выбор; структура определяет.

Возвращает ли Crawlbase данные как JSON или CSV?

Оба. Crawlbase Crawling API и Scraper API возвращают разобранные результаты, которые вы можете сохранить как JSON для последующего кода или выгрузить в CSV для электронных таблиц и анализа, так что вы выбираете формат, подходящий для следующего этапа вашего пайплайна.

Начать создавать

Обходите любой сайт в масштабе, без борьбы с инфраструктурой.

Crawlbase берёт на себя прокси, отпечатки и CAPTCHA, чтобы ваша команда выпускала конвейеры данных вместо поддержки обвязки краулинга. 1 000 запросов бесплатно, без карты.

Самообслуживание · Звонок отдела продаж не требуется · Доступны корпоративные объёмы краулинга