Escribir JSON en un archivo en C#
En esta publicación, aprenderemos a usar el lenguaje de programación C# para construir objetos JSON básicos y escribirlos en un archivo. Para comenzar, debe tener una comprensión sólida de lo que es JSON.
El formato JSON
JSON significa Notación de objetos de JavaScript y es un estándar para el intercambio de datos mínimos. Utiliza una parte del lenguaje de programación JavaScript como base.
JSON es una estructura independiente del lenguaje total y no utiliza caracteres especiales. Es simple para las personas leer y escribir en JSON y para las computadoras producir e interpretar datos JSON.
Una alternativa a XML, proporciona soporte integrado para los tipos de datos más fundamentales. El término Notación de objetos de JavaScript se refiere a la sintaxis utilizada tanto en JavaScript como en JSON.
Dado que es un lenguaje basado en texto, es más sencillo de leer para el usuario y, al mismo tiempo, es más sencillo de interpretar para las máquinas. No hace unos años, los programadores solían confiar en XML para facilitar la comunicación entre diferentes aplicaciones de servicio, como los servicios web.
Sin embargo, los usuarios comenzaron a investigar JSON como un posible estándar de serialización de datos alternativo a medida que la API web ganaba popularidad.
Descargar e instalar Json.NET
Para serializar datos en formato JSON, podemos utilizar la clase nativa proporcionada por .NET Framework o utilizar cualquier otro componente de terceros. Usaremos la biblioteca de serialización NewtonSoft
para serializar la estructura JSON en este tutorial.
-
Para comenzar, debemos preparar el lugar de trabajo de Microsoft Visual Studio e instalar el paquete
Newtonsoft
. -
Inicie Microsoft Visual Studio y elija
Archivo
en la barra de menú, luegoNuevo
y la opciónProyecto
. -
Seleccione
Visual C#
en el lado izquierdo y luego haga clic enAplicación de consola (.NET Framework)
. Asigne un nombre apropiado y localice su proyecto.Lo llamamos
writejsonByZeeshan
. Después de darle un nombre, haga clic enAceptar
. -
Ahora que el proyecto está creado, incluiremos una referencia a
Json.NET
. Para ello, haremos clic derecho en el áreaSolution Explorer
y elegiremosAdministrar NuGet Packages for Solution
. -
Después de seleccionar
Newtonsoft.Json
, elijaInstalar
en el panel de la derecha. -
Una vez finalizada la descarga, el componente se instalará y
Json.NET
mostrará una marca de verificación en color verde. -
Ahora, descubrirá que se ha agregado una referencia para
Newtonsoft.json
si va a la referencia en elExplorador de soluciones
. Después de agregarNewtonsoft.json
, es hora de que construyamos el código que creará JSON.
Escriba JSON en un archivo usando Json.NET
La referencia a Newtonsoft
se incluyó previamente en nuestra solución cuando se desarrolló por primera vez. Ahora es el momento de comenzar a trabajar en el primer código que serializará y producirá un JSON.
Comencemos con una estructura JSON básica y luego, a medida que avanzamos, avancemos progresivamente hacia estructuras más complicadas mientras repasamos el código línea por línea y analizamos su funcionamiento con mayor profundidad. Comencemos poniendo estructura en un archivo JSON agregando primero una nueva clase a nuestro proyecto.
-
Para comenzar, agregue las siguientes bibliotecas en
Main()
:using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks;
-
Para agregar una clase, haga clic con el botón derecho en el panel
Explorador de soluciones
, haga clic con el botón izquierdo enAgregar
y elija una clase del menú desplegable. Después de darle un nombre aceptable, como llamamos a la claseEstudiante
, el último paso es hacer clic en el botónAgregar
. -
Comencemos a definir los objetos variables en la nueva clase después de crearlos con éxito. Incluimos el
Nombre
,Rollnum
,Grado
yCiudad
en la claseEstudiante
y le asignamos los siguientes valores.class Student { public string Name = "Muhammad Zeeshan"; public int Rollnum = 3227; public string Grade = "A"; public string City = "Islamabad"; }
-
Entonces, crearemos una instancia de la clase
Estudiante
llamadas
en nuestra funciónPrincipal
.Student s = new Student();
-
Luego, con el método
JsonConvert.SerializeObject
, transformaremos el objeto de clase que acabamos de especificar en formato JSON. Pongamos los datos serializados en una variable de cadena llamadaSerializedJsonResult
.string SerializedJsonResult = JsonConvert.SerializeObject(s);
-
Ahora que los datos se serializaron en formato JSON, debemos proporcionar una ubicación para guardarlos. Para ello se utilizará una variable de cadena denominada
jsonpath
.string jsonpath = "D:/jsondata/studentdata.json";
-
Usaremos la condición
if
para comprobar si la ruta es correcta o no. Si la ruta ya está allí, el código sobrescribirá la existente creando una nueva, destruyendo la anterior.if (File.Exists(jsonpath)) { File.Delete(jsonpath); using (var st = new StreamWriter(jsonpath, true)) { st.WriteLine(SerializedJsonResult.ToString()); st.Close(); } }
-
Si la ruta no está disponible,
else-if
creará una nueva ruta y escribirá el JSON en el archivo.else if (!File.Exists(jsonpath)) { using (var st = new StreamWriter(jsonpath, true)) { st.WriteLine(SerializedJsonResult.ToString()); st.Close(); } }
Código fuente completo
Código de ejemplo (Clase Estudiante
):
class Student {
public string Name = "Muhammad Zeeshan";
public int Rollnum = 3227;
public string Grade = "A";
public string City = "Islamabad";
}
Código de ejemplo (Clase Principal
):
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace writejsonByZeeshan {
class Program {
static void Main(string[] args) {
Student s = new Student();
string SerializedJsonResult = JsonConvert.SerializeObject(s);
string jsonpath = "D:/jsondata/studentdata.json";
if (File.Exists(jsonpath)) {
File.Delete(jsonpath);
using (var st = new StreamWriter(jsonpath, true)) {
st.WriteLine(SerializedJsonResult.ToString());
st.Close();
}
}
else if (!File.Exists(jsonpath)) {
using (var st = new StreamWriter(jsonpath, true)) {
st.WriteLine(SerializedJsonResult.ToString());
st.Close();
}
}
}
}
}
Producción :
{"Name":"Muhammad Zeeshan","Rollnum":3227,"Grade":"A","City":"Islamabad"}
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedInArtículo relacionado - Csharp JSON
- C# Parse JSON
- C# Convertir el objeto en una cadena JSON
- Deserializar JSON con C#
- Publicar JSON en un servidor en C#
- Convertir cadena JSON en objeto C#