Сериализация и десериализация 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 содержит все точки входа и основные типы.
- Пространство имен System.Text.Json.Serialization содержит атрибуты и интерфейсы API для сложных сценариев и настройки, характерной для сериализации и десериализации.
- Пространство имен System.Net.Http.Json содержит методы расширения для сериализации и десериализации полезных данных JSON из сети.
Внимание
System.Text.Json
не поддерживает следующие API сериализации, которые вы могли использовать ранее:
- Атрибуты из System.Runtime.Serialization пространства имен.
- Атрибут System.SerializableAttribute и ISerializable интерфейс. Эти типы используются только для сериализации двоичных и XML-файлов.
Сравнение отражения и создания источника
По умолчанию собирает метаданные, System.Text.Json
необходимые для доступа к свойствам объектов для сериализации и десериализации во время выполнения с помощью отражения. В качестве альтернативы можно использовать функцию созданияSystem.Text.Json
, чтобы повысить производительность, уменьшить использование частной памяти и упростить обрезку сборок, что сокращает размер приложения.
Дополнительные сведения см. в разделе "Отражение и создание источника".
Сведения о безопасности
Сведения об угрозах безопасности, которые рассматривались при разработке JsonSerializerи способах их устранения, см. в статье System.Text.Json
"Модель угроз".
Потокобезопасность
Сериализатор System.Text.Json
был разработан с учетом безопасности потоков. Практически это означает, что после блокировки JsonSerializerOptions экземпляры можно безопасно совместно использовать в нескольких потоках.
JsonDocument предоставляет неизменяемое представление и в .NET 8 и более поздних версиях, потокобезопасное, DOM-представление значений JSON.