C#Programación

Como crear y leer cadenas JSON en C# con System.Text.Json

En este tutorial aprenderás a manipular cadenas JSON desde cero en c#, vamos a crear y leer cadenas JSON en C# con la librería oficial System.Text.Json.

Para empezar debemos importar la librería System.Text.Json desde el administrador de paquetes NuGet en Visual Studio para nuestra aplicación de consola y luego pasaremos al primer punto.

Si tu proyecto apunta a .NET Core 3.0 (o superior) solo se instalará una librería en caso de que sea .NET Framework 4.7 te pedirá descargar e instalar otras dependencias pero no cambia la forma de usar la librería.

Dirigirse al administrador de paquetes NuGet en Herramientas > Administrador de paquetes NuGet -> Administrar paquetes NuGet para la solución
Dirigirse al administrador de paquetes NuGet en Herramientas > Administrador de paquetes NuGet > Administrar paquetes NuGet para la solución
De clic en examinar y utilice el cuatro de búsqueda para localizar la librería System.Text.Json y agréguela a su proyecto.
De clic en examinar y utilice el cuatro de búsqueda para localizar la librería System.Text.Json y agréguela a su proyecto.
Acepte los cambios para proceder a la descarga e instalación de la librería.

Crear cadenas JSON

Para crear una cadena JSON vamos a utilizar el método

que nos permite la escritura de un texto en formato JSON, inicialmente vamos a trabajar todo en memoria por lo que usaremos

que nos otorga un buffer dinámico.

Los parámetros necesarios para crear una instancia de

son un Stream y

, como mencionamos

nos va a otorgar el

necesario y de tamaño variable.

El segundo es

que es una estructura que nos permite personalizar el comportamiento del escritor JSON y nos da 3 propiedades :

  • : Nos permite definir el codificador a usar por
    este valor es nulo por defecto y esto indica que se utilizar el predeterminado
  • : Obtiene o establece un valor de tipo
    (True o False) que le indica al escritor si debe aplicar un formato a la salida JSON como sangría a los tokens, adición de líneas nuevas y espacios, en otras palabras te muestra todo bonito.
  • : Obtiene o establece un valor de tipo bool que le indica al escritor si puede o no omitir la validación estructural permitiendo que el usuario escriba cadenas invalidas.

Ahora vamos a codificar, primero vamos a declarar el objeto de tipo

de nombre

y en este caso solo vamos a asignarle un valor a su propiedad

para que nos muestre la cadena JSON a como estamos acostumbrados.

Luego utilizando el bloque

vamos a crear un objeto de tipo

que será nuestro espacio en memoria y nuevamente dentro de ese bloque utilizaremos otro bloque

donde vamos a crear un objeto pero ahora de tipo

el cual inicializaremos con el

y

.

Ahora solo queda estructurar el contenido de nuestro texto JSON, al inicio de nuestra cadena hay una llave

por lo que de acuerdo a la documentación de la librería utilizaremos el método

este escribirá el principio del objeto JSON.

Después agregaremos las propiedades a nuestro objeto, en mi caso quiero poner

y seguido el nombre que quiera poner, por ejemplo

utilizando el método

del

.

También agregare otro pero ahora será un numero, en mi caso una edad con el método

voy a colocar el nombre de la propiedad edad y el valor que seria 22

Así podríamos seguir añadiendo propiedades a nuestro objeto JSON yo me conformo con esos dos para no hacer las cosas mas extensas, al terminar de agregar las propiedades vamos a añadir

que nos dará el final del objeto

.

Ahora que hemos terminado de crear el objeto JSON vamos a sacarlo de la memoria y asignarlo a una variable de tipo

, para ello vamos a convertir los

almacenados en nuestro

con la función

.

Al ultimo podremos imprimir la cadena para ver como quedo nuestro objeto. El código completo quedaría de la siguiente forma

Si quieres almacenar tu cadena a un archivo ya solo deberías agregar

antes de cerrar el primer

, con eso se almacenara el archivo en la misma carpeta del programa con el nombre

.

Ahora veremos como leer una cadena JSON y obtener los valores de sus propiedades.

Leyendo cadenas JSON

Anteriormente ya aprendimos a crear cadenas JSON y ahora vamos a ver como leer las propiedades que le hemos añadido, para ello ahora vamos a utilizar los métodos de

que es una clase que nos permite obtener los datos de las propiedades del JSON.

En este caso mi cadena es la siguiente:

Primero creamos un objeto de tipo

y como es una estructura le podemos personalizar las propiedades que son las siguientes:

  • : Obtiene o establece un valor de tipo bool que indica si se permiten o se ignora una coma adicional al final de una lista de valores JSON.
  • : Obtiene o establece un valor que determina como maneja los comentarios, en este caso se recibe un valor de la enumeración
    que contiene:

    • : Que permite los comentarios dentro del JSON y son tratados como tokens validos
    • : Donde los comentarios causan que el JSON sea tomado como invalido y genera una excepción.
    • : Que permite los comentarios pero los ignora y es como sino existieran.
  • : Obtiene o establece la profundidad máxima permitida al analizar datos JSON, y el valor predeterminado (es decir, 0) indica una profundidad máxima de 64.

Luego vamos a crear un objeto de tipo JsonDocument y lo que vamos a hacer es inicializarlo con una cadena en formato JSON la cual será analizada con

el cual tiene varias sobrecargas pero nosotros utilizaremos

.

 

El objeto

contiene el contenido de la cadena JSON y ahora lo trataremos como un documento, inicialmente nos debemos encontrar en la raíz del documento JSON para poder acceder a las propiedades de la misma, por lo tanto vamos a crear un

que nombrare

que será igual al

esta función nos posiciona en la Raíz de dicho documento.

Ahora si, podemos disponer de los valores de cada propiedad, con la función

que recibe como argumento el nombre de la propiedad y devuelve el valor que esta almacene.

De esa forma podemos obtener los valores de las cadenas JSON, y el código quedaría como lo siguiente:

Podemos anidar los elementos en caso de que se requiera, por ejemplo para leer esta cadena:

Donde para acceder a la contraseña debemos anidar la propiedad

dentro de un nuevo

y ese nuevo podrá acceder a la propiedad contraseña, esto se haría de la siguiente manera:

Ahora en caso de que tengamos un

de objetos dentro de una propiedad como la siguiente cadena, donde tenemos otro objeto en

En este caso vamos a utilizar un

para obtener los datos de cada objeto, lo haremos de la siguiente forma:

Espero que no haya sido tan confuso este tema aunque en la parte de abajo les dejo el proyecto de ejemplo para que lo puedan estudiar a detalle y noten como funciona.

Demo

En el siguiente Fiddle te muestro como funciona el ejemplo en .NET Core 3.1, como ya mencionaba al principio, puedes utilizar este tutorial con .NET Framework 4.7 y automáticamente se descargan las dependencias necesarias.

De esta forma es que podemos crear y leer cadenas JSON todo en C# de una forma fácil, esto nos puede ayudar en proyectos futuros, siempre puedes consultar la documentación oficial o preguntar en los comentarios.

Visita nuestra categoría C# y encuentra más tutoriales como este!

Documentación de System.Text.Json

Botón volver arriba