Первый JSON-CSV конвертер, который я когда-либо писал, продержался три дня в производстве.
Это был & quot;экспорт в электронную таблицу& quot; кнопка в панели администратора Laravel, и моя логика преобразования была - I' я не горжусь этим - values.join(","), йо- Оно прошло через тестирование. Затем пользователь экспортировал список клиентов, где одна компания была названа «Смит, Джонс и партнеры» и каждая после этого колонка смещала одну позицию вправо. Их бухгалтер импортировал 340 строк несоответствующих данных, прежде чем кто-либо заметил, что номера телефонов находятся в колонке электронной почты.
Запятая в CSV — это не разделитель, который вы можете цеплять. это грамматика, определенная в RFC 4180, с фактическими правилами побега. Именно из-за этого баг json в CSV конвертер Позже я построил для Toolz.dev, что бегство считается неоспоримым - и почему это руководство проводит реальное время на крайних случаях, а не только на счастливом пути.
Вот пять методов, которые я на самом деле использую, когда каждый выигрывает, и где каждый кусается.
TL;DR: Для одноразовых преобразований вставьте свой JSON в Toolz.dev json в CSV конвертер- он выравнивает вложенные объекты с помощью точечной записи, правильно выходит из RFC 4180 и работает на 100% в вашем браузере. Для повторяющихся заданий напишите это:
pd.json_normalize()В Python илиjson2csvПакет в узле. Подтвердите с помощью Форматтер JSON во-первых, сохранение оригинального выравнивания JSON-CSV является односторонним.
Зачем вам нужен CSV, если у вас уже есть JSON?
Потому что люди, которым нужны ваши данные, не живут в вашем терминале. Каждый запрос на преобразование, который я когда-либо получал, сводит к одной из пяти ситуаций:
Аналитики работают в электронных таблицах. Excel, Google Sheets, Tableau, Power BI - все они вдыхают CSV изначально и подавляются вложенным JSON. Преобразование вывода API в CSV - это то, как инженерные данные достигают бизнес-стороны.
Базы данных масс-импорт плоских файлов. PostgreSQL's COPY и MySQL's LOAD DATA нужен табличный ввод. Столбцы JSON существуют, но загрузка в реальные реляционные таблицы означает сначала выравнивание.
Миграциям нужна лингва-франка. Перемещение данных между хранилищем NoSQL и реляционным или между двумя платформами SaaS, CSV — это формат, который надежно понимает оба конца.
Соответствие любит плоские файлы. Некоторые требования к архиву задают читаемые человеком форматы. CSV открывается во всем, через несколько десятилетий.
Заинтересованные стороны не могут читать JSON. Менеджер по продукту, спрашивающий "Можно ли получить это в виде электронной таблицы" является единственным наиболее распространенным триггером. Это был триггер для моей сломанной кнопки экспорта.

Что затрудняет преобразование JSON-CSV?
Плоский JSON тривиальный. ЭТО:
[
{"id": 1, "name": "Alice", "email": "[email protected]", "age": 30},
{"id": 2, "name": "Bob", "email": "[email protected]", "age": 25}
]
Становится это, ключи к заголовкам, элементы в строки:
id,name,email,age
1,Alice,[email protected],30
2,Bob,[email protected],25
Но реальные ответы API никогда не бывают ровными. Они выглядят так:
[
{
"id": 1,
"name": "Alice",
"address": {"street": "123 Main St", "city": "San Francisco", "state": "CA"},
"skills": ["JavaScript", "Python", "Go"]
}
]
CSV не имеет понятия «внутри». Таким образом, вы выбираете стратегию сплющи, и у каждого из них есть стоимость:
Уплощение дотна- вложенные ключи становятся составными заголовками:
id,name,address.street,address.city,address.state,skills
1,Alice,123 Main St,San Francisco,CA,"JavaScript; Python; Go"
Индексированные столбцы для массивов-- skills.0, skills.1, skills.2, йо- Предсказуемо, но рекорд с 14 навыками дает 14 колонок для всех.
Кодексы JSON- засуньте сырой JSON в камеру, цитата двойная. Без потерь, нечитаемый, и это огорчает аналитиков.
Точечная запись со связанными массивами является правильным стандартом для потребления человеком - it's что Конвертер Toolz.dev Производит. Индексированные столбцы выигрывают, когда нисходящий код нуждается в адресе каждого элемента. JSON-IN-CELLS — последнее средство для круглосуточных поездок.
Метод 1: Как преобразовать JSON в CSV онлайн?
Лучше всего для: Одноразовые конверсии, не разработчики, что-то под несколько десятков МБ.
- откройте json в CSV конвертер, йо-
- Вставьте свой JSON - массив объектов или один объект.
- Инструмент обнаруживает структуру, сглаживает вложенные объекты до точки сведения и мгновенно отображает CSV.
- скопируйте или скачайте
.csv, йо-
Причина, по которой я по умолчанию использую этот сценарий для чего-либо неповторяющегося: нулевая настройка, правильный выход из RFC 4180 (выучил этот урок), автоматическое объединение ключей для непоследовательных объектов и - потому что на стороне клиента 's - ответ API, полный только что вставленных вами писем от клиентов, никогда не покидает вашу машину. Посмотрите вкладку "Сеть", если вы не верите ' не верьте мне; этот тест 's я применяю к каждому онлайн-конвертеру, но большинство из них его не проходят.
Где это неправильный инструмент: повторяющиеся преобразования (скрипт IT) и глубоко патологическое вложение, где вы хотите вручную выбрать стратегию сглаживания.

Метод 2: Как преобразовать json в CSV в javascript?
Лучше всего для: Стройте конвейеры, службы узлов, логику пользовательского преобразования.
Здесь's минимальная правильная версия - обратите внимание на побег, который является той частью, которую пропустила моя трехдневная катастрофа:
function jsonToCsv(jsonArray) {
if (!jsonArray.length) return "";
const headers = Object.keys(jsonArray[0]);
const csvRows = [
headers.join(","),
...jsonArray.map(row =>
headers.map(header => {
const value = row[header] ?? "";
// RFC 4180: double embedded quotes, wrap anything containing , " or newline
const escaped = String(value).replace(/"/g, '""');
return /[,"\n\r]/.test(escaped) ? `"${escaped}"` : escaped;
}).join(",")
)
];
return csvRows.join("\n");
}
Для вложенного ввода сначала сплющите и объедините клавиши - взятие заголовков только из первого объекта является второй по распространенности ошибкой в ручных преобразователях:
function flattenObject(obj, prefix = "") {
const result = {};
for (const [key, value] of Object.entries(obj)) {
const newKey = prefix ? `${prefix}.${key}` : key;
if (value && typeof value === "object" && !Array.isArray(value)) {
Object.assign(result, flattenObject(value, newKey));
} else if (Array.isArray(value)) {
result[newKey] = value.join("; ");
} else {
result[newKey] = value;
}
}
return result;
}
function nestedJsonToCsv(jsonArray) {
const flattened = jsonArray.map(item => flattenObject(item));
// Union of ALL keys, not just the first object's
const headers = [...new Set(flattened.flatMap(Object.keys))];
// ...then emit rows exactly as in jsonToCsv above
}
Или пропустить ручную прокатку - the json2csv Пакет обрабатывает эти края в течение многих лет:
import { Parser } from "json2csv";
const parser = new Parser({ flatten: true });
const csv = parser.parse(data);
Метод 3: Как преобразовать json в CSV в Python?
Лучше всего для: Рабочие процессы науки о данных, все, что уже касается панд.
Однострочный Pandas покрывает плоский JSON:
import pandas as pd
df = pd.read_json("data.json")
df.to_csv("output.csv", index=False)
Полезная функция pd.json_normalize()- специально создан для вложенных ответов API:
import pandas as pd
import requests
response = requests.get("https://api.example.com/users")
df = pd.json_normalize(response.json())
print(df.columns.tolist())
# ['id', 'name', 'skills', 'address.street', 'address.city', 'address.state']
# Arrays still need a decision — join them explicitly:
df["skills"] = df["skills"].apply(lambda x: "; ".join(x) if isinstance(x, list) else x)
df.to_csv("output.csv", index=False)
заметьте, что json_normalize Плоские гнездятся предметы Но уходит широкие стрел в списках Python - если вы пропустите шаг соединения, ваши ячейки CSV будут содержать ['JavaScript', 'Python'] дословно. Все бьют это один раз.
Панды нет? Стандартная библиотека обрабатывает плоский JSON:
import json, csv
with open("data.json") as f:
data = json.load(f)
with open("output.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
Метод 4: Как преобразовать JSON в CSV из командной строки?
Лучше всего для: Сценарии оболочки, конвейеры CI, серверы, где установка панд является излишним.
jq Делает ли это изначально с @csv, который уходит правильно:
cat data.json | jq -r '
(.[0] | keys_unsorted) as $keys |
($keys | @csv),
(.[] | [.[$keys[]]] | @csv)
'
csvkit'с in2csv Является маломыслимым вариантом:
pip install csvkit
in2csv data.json > output.csv
и Миллер (mlr) светится, когда вы хотите фильтровать в том же проходе:
mlr --json2csv filter '$age > 25' data.json > output.csv
Композитивность суть - curl -s api.example.com/data | jq ... > report.csv представляет собой полный конвейер API-to-Spreadsheet в одной строке cron.
Метод 5: Можете ли вы импортировать JSON непосредственно в Excel или Google Sheets?
Лучше всего для: Неразработчики, данные по обновлению в режиме реального времени, одноразовые импортные импортные данные.
превосходно: Данные → Получить данные → из Интернета, вставить URL-адрес API, а Power Query предоставляет вам визуальный редактор для расширения вложенных записей перед загрузкой. Действительно хорошо для повторных обновлений одного и того же источника.
Google Таблицы: Расширения → Сценарий приложений, затем небольшая функция выбора:
function importJSON(url) {
const response = UrlFetchApp.fetch(url);
const data = JSON.parse(response.getContentText());
if (!Array.isArray(data) || data.length === 0) return [["No data"]];
const headers = Object.keys(data[0]);
const rows = data.map(item => headers.map(h => item[h] ?? ""));
return [headers, ...rows];
}
используется в ячейке как =importJSON("https://api.example.com/data"), йо-
Честный взгляд: для одноразового импорта, конвертация с Онлайн инструмент И открытие CSV быстрее, чем любой из них. Нативные маршруты электронной таблицы зарабатывают себестоимости только тогда, когда данные обновляются по расписанию.
Какой метод выбрать?
| метод | снабжать | Вложенный JSON | повторное использование | Данные остаются локальными |
|---|---|---|---|---|
| Онлайн конвертер | ни один | автоматический | Ручной каждый раз | Да - клиентская сторона |
| JavaScript / Json2CSV | npm install | через flatten |
отличный | да |
| Python / Панды | установка пипс | json_normalize |
отличный | да |
| JQ / CSVKIT / MLR | менеджер пакетов | Ручные пути | Отлично (CRON/CI) | да |
| Эксель / листы | Учет/приложение | Пользовательский интерфейс Power Query | Хорошо (авто-обновление) | Excel: да; листы: серверы Google |
Мое правило: дотянуться до браузерного инструмента до третьего раза I & #39;m конвертируя ту же форму данных - тогда это становится скриптом.
Какие крайние случаи нарушают преобразование JSON-CSV?
Четыре ловушки составляют почти каждый сломанный экспорт, который я отлаживал:
Непоследовательные ключи. Объект 1 имеет email, объект 2 имеет phone, объект 3 имеет оба. Возьмите заголовки только от первого объекта и вы молча отбрасываете данные. исправление является ключ-союз по всем объектам, с отсутствующими значениями как пустые ячейки - что хорошие инструменты делают автоматически.
Неочищенные специальные символы. Проблема "Смит, Джонс и партнеры". PER RFC 4180: оберните значения, содержащие запятые, кавычки или строки в двойных кавычках, и удвойте все кавычки (внедренные) ("He said ""hello""").
Большие файлы. За последние 100 МБ или около того анализ всего файла становится болезненным. Поток вместо - jq Потоки, Pandas читает фрагментами, а формат строк JSON (по одному объекту в строке) упрощает оба. Для файлов до нескольких десятков МБ инструмент браузера подходит, так как нет загрузки.
кодирование. Имена и адреса несут символы, не являющиеся ASCII. Держите все UTF-8 от начала до конца и с подозрением относитесь к Excel в Windows, которая исторически хотела, чтобы спецификация UTF-8 правильно обнаружила.
И одна практика, которая не является необязательной: проверяйте, прежде чем конвертировать. Усеченный файл JSON завершается сбивающим с толку при конверсии, но, очевидно, в Форматтер JSON, йо- Тридцать секунд проверки превосходят десять минут "Почему мой CSV пуст.
Часто задаваемые вопросы
Как конвертировать JSON в CSV онлайн бесплатно?
Вставьте свой JSON в Конвертер JSON в CSV на Toolz.dev- он мгновенно генерирует CSV с вложенными объектами, сплющенными и обработанными экранирующими, а затем позволяет копировать или загружать результат. Никакой регистрации, а обработка на 100% зависит от клиента, поэтому ваши данные никогда не покидают ваш браузер.
Могу ли я преобразовать вложенный JSON в CSV?
да. Вложенные объекты сплющены в заголовки DOT-Notation (address.city), а массивы либо соединяются в разделительную строку, либо разбиваются на индексированные столбцы. выше Конвертер Toolz.dev Применяет точечное замечание автоматически; в Python, pd.json_normalize() делает то же самое.
Как преобразовать файл JSON в CSV в Python?
import pandas as pd; pd.read_json("data.json").to_csv("output.csv", index=False) Для плоских JSON. Для вложенных структур используйте pd.json_normalize(data) сначала - и не забудьте самостоятельно присоединить любые столбцы массива, так как нормализуйте списки листьев в целости и сохранности.
Как лучше всего конвертировать очень большие файлы JSON?
Поток, а не загрузка: jq В командной строке или панд с дробными чтениями. Преобразование файла в строки JSON (по одному объекту на строку) сначала упрощает потоковую передачу. Браузерные инструменты удобны до нескольких десятков МБ, за ~ 100 МБ, пользуйтесь командной строкой.
Как преобразовать CSV обратно в JSON?
выше CSV в JSON конвертер переворачивает путешествие - каждая строка становится объектом, на который нажимает строка заголовка Программно: pd.read_csv("data.csv").to_json(orient="records"), йо-
Почему в моем CSV есть кавычки вокруг некоторых значений?
Это правильное поведение, а не ошибка. RFC 4180 требует двойных кавычек вокруг любого значения, содержащего запятые, новые строки или символы кавычки, со встроенными кавычками удвоены. Электронные таблицы и парсеры разбивают их на чтение.
Преобразование JSON-CSV без потерь?
Для плоского JSON да. Для вложенного JSON значения выживают, но иерархия не выживает 't - заголовки точечных обозначений сплющены представитель, и вы не можете всегда реконструировать точную первоначальную вложенность из них. Сохраняйте исходный JSON; рассматривайте CSV как производное представление.
Почему мои столбцы не выровнены после преобразования?
Почти всегда сбой выхода: значение, содержащее запятую было 't цитируется, поэтому парсеры видят дополнительные столбцы с этого момента. It's точная ошибка с моей кнопки экспорта Laravel. Используйте преобразователь, который реализует RFC 4180, а не значения соединения строк - и если вы написали свой собственный, протестируйте его с таким значением, как Smith, Jones & Partners, йо-
Как преобразовать json в CSV в Excel или Google Sheets?
Оба приложения импортируют JSON через помощника, а не в виде вставки. В Excel используйте данные → Получить данные → из файла → из JSON, затем сгладьте запрос в Power Query и закройте & Загрузите. В Google Sheets вставьте небольшие массивы с помощью сценария временного приложения или конвертируйте с помощью json в CSV конвертер сначала откройте полученный файл - обычно это более быстрый путь для разового файла.
Какой метод JSON в CSV мне следует использовать?
Для быстрого одноразового использования конвертер на стороне клиента является самым быстрым и сохраняет данные в тайне. Для повторяющихся конвейеров используйте Python с пандами; для огромных файлов продавайте с помощью jq в командной строке, а reach для импорта электронных таблиц только тогда, когда не разработчики владеют рабочим процессом. Сопоставьте инструмент с тем, как часто вы будете повторять работу, а не только размер файла.
Сопоставьте метод с заданием
JSON-to-CSV выглядит как решенная однострочная, пока запятая в названии компании не сместит 340 строк клиентских данных на одну колонку вправо. Метод имеет меньшее значение, чем соблюдение формата: Escape Per RFC 4180, объедините свои ключи, намеренно определите свою стратегию сглаживания и сохраните оригинальный JSON.
Для следующего одноразового преобразования json в CSV конвертер это пятнадцать секунд. Подтвердите сначала с помощью Форматтер JSON, а когда данные должны вернуться, CSV в JSON конвертер замыкает цикл - все три в вашем браузере, ни один из них никогда не видел вашу сторону сервера данных.
Связанные статьи:
- Полное руководство по инструментам JSON (2026)
- Как отформатировать JSON Online: заполните руководство с примерами
- бесплатное руководство по онлайн-текстовым инструментам



