Поделиться через


Сериализация и десериализация 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 и более поздних версий.

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

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

Пространства имен и API

Внимание

System.Text.Json не поддерживает следующие API сериализации, которые вы могли использовать ранее:

Сравнение отражения и создания источника

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

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

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

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

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

Сериализатор System.Text.Json был разработан с учетом безопасности потоков. Практически это означает, что после блокировки JsonSerializerOptions экземпляры можно безопасно совместно использовать в нескольких потоках. JsonDocument предоставляет неизменяемое представление и в .NET 8 и более поздних версиях, потокобезопасное, DOM-представление значений JSON.

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