Compartir a través de


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 la biblioteca System.Text.Json enfatiza el alto rendimiento y la baja asignación de memoria por encima de un extenso 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. El paquete admite:

  • .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

Importante

System.Text.Json no admite las siguientes API de serialización que podría haber usado anteriormente:

Reflexión frente a generación de origen

De forma predeterminada, System.Text.Json recopila los metadatos que necesita para acceder a las propiedades de los objetos para la serialización y 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 de 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, desde .NET 8 y versiones posteriores, segura para hilos para los valores JSON.

Recursos adicionales