JSON CSV конвертер на C#
Приветствую! Здесь вы наверняка найдете, что ищете. Примеры в лаборатории рассчитаны на то, что мы разбираем что-то конкретное.
Текущая статья посвящена конвертеру JSON и CSV на C# — чтение, запись и преобразование форматов.
Поэтому за теорией по текущей теме вам — в энциклопедию. Если ещё не погружались, то маршрут прост:
- Основы
- Система и сеть
- Данные и разметка
- Код и разработка
- Языки
- Искусственный интеллект
- Проект
- Инфраструктура и безопасность
- Спин-офф
Обязательно пройдитесь.
А теперь приступим к нашему предмету.
JSON CSV конвертер на C#
JSON CSV конвертер — это утилита, преобразующая данные между двумя популярными форматами: JSON (JavaScript Object Notation) и CSV (Comma-Separated Values). Такой инструмент полезен при миграции данных, экспорте отчётов, интеграции систем и подготовке данных для анализа. В .NET существует несколько подходов к реализации подобного конвертера, включая использование встроенных средств и сторонних библиотек.
Архитектурные ограничения форматов
- JSON — иерархический формат, поддерживающий вложенные объекты и массивы.
- CSV — табличный формат с фиксированным набором колонок и строками записей.
Прямое преобразование возможно только для плоских JSON-структур, где каждый объект содержит одинаковый набор скалярных свойств. Вложенные объекты или массивы требуют предварительного "выравнивания" (flattening).
Простая реализация без внешних зависимостей
Для демонстрации базового принципа используется Система.Text.Json (встроен в .NET 6+) и ручная обработка CSV.
Шаг 1: Модель данных
public class Person
{
public string Name { get; set; } = string.Empty;
public int Age { get; set; }
public string Email { get; set; } = string.Empty;
}
Шаг 2: Конвертер JSON → CSV
Шаг 3: Конвертер CSV → JSON
Шаг 4: Использование
Расширенная реализация с поддержкой динамических структур
Для обработки произвольного JSON без жёстко заданной модели используется JsonDocument.
JSON → CSV (динамически)
Эта версия работает с любым плоским JSON-массивом объектов, не требуя предварительного определения класса.
Использование сторонней библиотеки: CsvHelper
Для надёжной обработки CSV рекомендуется использовать проверенную библиотеку CsvHelper.
Установка
dotnet add package CsvHelper
Пример: JSON → CSV через CsvHelper
CsvHelper автоматически:
- Генерирует заголовки из имён свойств.
- Экранирует специальные символы.
- Поддерживает локализацию, кастомные маппинги, вложенные объекты (через индексацию).
Обработка ошибок и ограничений
- Вложенные объекты:
{ "address": { "city": "Москва" } }не могут быть напрямую преобразованы в CSV. Требуется flattening:address.city. - Массивы:
[1, 2, 3]внутри объекта нарушают табличную структуру. - Несогласованные поля: разные объекты с разным набором свойств приведут к некорректному CSV.
- Кодировка: используйте UTF-8 с BOM для совместимости с Excel.
Практические рекомендации
- Для простых случаев — достаточно встроенного
Система.Text.Jsonи ручной CSV-логики. - Для production-кода — применяйте CsvHelper или аналоги (TinyCsvParser, ChoETL).
- Всегда валидируйте входные данные перед конвертацией.
- При работе с большими файлами — используйте потоковую обработку (
Stream,JsonDocument), чтобы избежать переполнения памяти.