Сериализация и десериализация JSON (маршалинг и демаршалинг) в .NET — обзор

Пространство имен System.Text.Json предоставляет функциональные возможности для сериализации в нотацию объектов JavaScript (JSON) и десериализации объектов из этой нотации. Сериализация — это процесс преобразования состояния объекта, т. е. значений его свойств, в форму, которую можно хранить или передавать. Сериализованная форма не содержит никаких сведений о методах, связанных с объектом. Десериализация восстанавливает объект из сериализованной формы.

Дизайн System.Text.Json библиотеки подчеркивает высокую производительность и низкое выделение памяти по сравнению с обширным набором функций. Встроенная поддержка UTF-8 оптимизирует процесс чтения и записи текста JSON в кодировке UTF-8, которая является наиболее распространенной кодировкой для данных в Интернете и файлов на диске.

Библиотека также предоставляет классы для работы с объектной моделью документов в памяти (DOM). Эта функция обеспечивает случайный доступ к элементам в JSON-файле или строке.

Существуют некоторые ограничения на то, какие части библиотеки можно использовать из кода Visual Basic. Дополнительные сведения см. в разделе Поддержка Visual Basic.

Получение библиотеки

Библиотека входит в состав общей платформы для .NET Core 3.0 и более поздних версий. Функция создания исходного кода встроена в общую платформу для .NET 6 и более поздних версий. Для использования создания исходного кода требуется пакет SDK для .NET 5 или более поздней версии.

Для версий платформы, предшествующих .NET Core 3.0, установите System.Text.Json пакет NuGet. Пакет поддерживает:

  • .NET Standard 2.0 и более поздних версий
  • платформа .NET Framework 4.6.2 и более поздних версий
  • .NET Core 2.1 и более поздних версий
  • .NET 5 и более поздней версии

Отражение во время выполнения и создание источника во время компиляции

По умолчанию использует отражение для сбора метаданных, System.Text.Json необходимых для доступа к свойствам объектов для сериализации и десериализации во время выполнения. В качестве альтернативы можно использовать функцию создания источника C#, System.Text.Json чтобы повысить производительность, уменьшить использование частной памяти и упростить обрезку сборок, что сокращает размер приложения. Дополнительные сведения см. в разделе Выбор отражения или создания источника в System.Text.Json.

Сведения о безопасности

Сведения об угрозах безопасности, которые учитывались при разработке JsonSerializer, и способах их устранения см. в разделе System.Text.Json Модель угроз.

Потокобезопасность

Сериализатор System.Text.Json был разработан с учетом безопасности потоков. На практике это означает, что после блокировки JsonSerializerOptions экземпляры можно безопасно совместно использовать в нескольких потоках.

JsonDocument был разработан для предоставления неизменяемого и, таким образом, потокобезопасного представления модели DOM для значений JSON. Однако из-за ошибки JsonDocumentпараллелизма в настоящее время не является потокобезопасной.

Дополнительные ресурсы