Serialización y deserialización de JSON en .NET: información general
El espacio de nombres System.Text.Json proporciona funcionalidad para serializar y deserializar desde notación de objetos JavaScript (JSON). La serialización es el proceso de convertir el estado de un objeto, es decir, los valores de sus propiedades, en un formulario que se puede almacenar o transmitir. El formulario serializado no incluye información sobre los métodos asociados de un objeto. La deserialización reconstruye un objeto a partir del formulario serializado.
El diseño de biblioteca System.Text.Json
resalta el alto rendimiento y la asignación de memoria baja en un amplio conjunto de características. La compatibilidad integrada con UTF-8 optimiza el proceso de lectura y escritura de texto JSON codificado como UTF-8, que es la codificación más frecuente de los datos en Internet y los archivos en disco.
La biblioteca también proporciona clases para trabajar con un modelo de objetos de documento (DOM) en memoria. Esta característica permite el acceso aleatorio a los elementos de una cadena o archivo JSON.
Para Visual Basic, hay algunas limitaciones en las partes de la biblioteca que puede usar. Para más información, consulte Soporte técnico de Visual Basic.
Cómo obtener la biblioteca
La biblioteca está integrada como parte del marco compartido para .NET Core 3.0 y versiones posteriores. La característica de generación de origen está integrada como parte del marco compartido para .NET 6 y versiones posteriores.
En las versiones del marco anteriores a .NET Core 3.0, instale el paquete NuGet System.Text.Json. que admite lo siguiente:
- .NET Standard 2.0 y versiones posteriores
- .NET Framework 4.6.2 y versiones posteriores
- .NET 8 y versiones posteriores
Espacios de nombres y API
- El espacio de nombres System.Text.Json contiene todos los puntos de entrada y los tipos principales.
- El espacio de nombres System.Text.Json.Serialization contiene atributos e interfaces API para escenarios avanzados y personalización específicos de la serialización y deserialización.
- El espacio de nombres System.Net.Http.Json contiene métodos de extensión para serializar y deserializar cargas JSON de la red.
Importante
System.Text.Json
no admite las siguientes API de serialización que podría haber usado anteriormente:
- Atributos del espacio de nombres System.Runtime.Serialization.
- Atributo System.SerializableAttribute y la interfaz ISerializable. Estos tipos solo se usan solo para la serialización binaria y XML.
Reflexión frente a generación de origen
De manera predeterminada, System.Text.Json
recopila los metadatos que necesita para acceder a las propiedades de los objetos para la serialización y la deserialización en tiempo de ejecución mediante la reflexión. Como alternativa, System.Text.Json
puede usar la característica de generación de origen de C# para mejorar el rendimiento, reducir el uso de memoria privada y facilitar el recorte de ensamblados, lo que reduce el tamaño de la aplicación.
Para obtener más información, consulte Reflexión frente a generación de código fuente.
Información de seguridad
Para obtener información sobre las amenazas de seguridad que se tuvieron en cuenta al diseñar JsonSerializer y cómo se pueden mitigar, vea Modelo de amenazas de System.Text.Json
.
Seguridad para subprocesos
El serializador System.Text.Json
se diseñó teniendo en cuenta la seguridad de subprocesos. Prácticamente, esto significa que una vez bloqueadas, las instancias JsonSerializerOptions se pueden compartir de forma segura entre varios subprocesos. JsonDocument proporciona una representación DOM inmutable y, en .NET 8 y versiones posteriores, la representación DOM segura para subprocesos para los valores JSON.