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