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.
Crear cadenas JSON
Para crear una cadena JSON vamos a utilizar el método
1 |
que nos permite la escritura de un texto en formato JSON, inicialmente vamos a trabajar todo en memoria por lo que usaremos
1 |
que nos otorga un buffer dinámico.
Los parámetros necesarios para crear una instancia de
1 |
son un Stream y
1 |
, como mencionamos
1 |
nos va a otorgar el
1 |
necesario y de tamaño variable.
El segundo es
1 |
que es una estructura que nos permite personalizar el comportamiento del escritor JSON y nos da 3 propiedades :
-
1
1 -
1
1 -
1
Ahora vamos a codificar, primero vamos a declarar el objeto de tipo
1 |
de nombre
1 |
y en este caso solo vamos a asignarle un valor a su propiedad
1 |
para que nos muestre la cadena JSON a como estamos acostumbrados.
1 |
Luego utilizando el bloque
1 |
vamos a crear un objeto de tipo
1 |
que será nuestro espacio en memoria y nuevamente dentro de ese bloque utilizaremos otro bloque
1 |
donde vamos a crear un objeto pero ahora de tipo
1 |
el cual inicializaremos con el
1 |
y
1 |
.
1 |
Ahora solo queda estructurar el contenido de nuestro texto JSON, al inicio de nuestra cadena hay una llave
1 |
por lo que de acuerdo a la documentación de la librería utilizaremos el método
1 |
este escribirá el principio del objeto JSON.
1 |
Después agregaremos las propiedades a nuestro objeto, en mi caso quiero poner
1 |
y seguido el nombre que quiera poner, por ejemplo
1 |
utilizando el método
1 |
del
1 |
.
1 |
También agregare otro pero ahora será un numero, en mi caso una edad con el método
1 |
voy a colocar el nombre de la propiedad edad y el valor que seria 22
1 |
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
1 |
que nos dará el final del objeto
1 |
.
1 |
Ahora que hemos terminado de crear el objeto JSON vamos a sacarlo de la memoria y asignarlo a una variable de tipo
1 |
, para ello vamos a convertir los
1 |
almacenados en nuestro
1 |
con la función
1 |
.
1 |
Al ultimo podremos imprimir la cadena para ver como quedo nuestro objeto. El código completo quedaría de la siguiente forma
1 |
Si quieres almacenar tu cadena a un archivo ya solo deberías agregar
1 |
antes de cerrar el primer
1 |
, con eso se almacenara el archivo en la misma carpeta del programa con el nombre
1 |
.
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
1 |
que es una clase que nos permite obtener los datos de las propiedades del JSON.
En este caso mi cadena es la siguiente:
1 |
Primero creamos un objeto de tipo
1 |
y como es una estructura le podemos personalizar las propiedades que son las siguientes:
-
1
-
1
1-
1
-
1
-
1
-
-
1
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
1 |
el cual tiene varias sobrecargas pero nosotros utilizaremos
1 |
.
El objeto
1 |
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
1 |
que nombrare
1 |
que será igual al
1 |
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
1 |
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:
1 |
Podemos anidar los elementos en caso de que se requiera, por ejemplo para leer esta cadena:
1 |
Donde para acceder a la contraseña debemos anidar la propiedad
1 |
dentro de un nuevo
1 |
y ese nuevo podrá acceder a la propiedad contraseña, esto se haría de la siguiente manera:
1 |
Ahora en caso de que tengamos un
1 |
de objetos dentro de una propiedad como la siguiente cadena, donde tenemos otro objeto en
1 |
1 |
En este caso vamos a utilizar un
1 |
para obtener los datos de cada objeto, lo haremos de la siguiente forma:
1 |
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