- Curso
- Serialización de datos
- JavaScriptSerializer: Serializar objetos
JavaScriptSerializer: Serializar objetos
Última actualización:
23/08/2020
⁃
Dificultad:
Intermedio
Crea un programa en C# que serializar y deserializar objetos en formato JSON. Para ello puede utilizar la clase JavaScriptSerializer
incluida en el espacio de nombres System.Web.Extensions
.
Primero implementa una clase Persona con tres propiedades (Nombre, Edad y Ciudad). La clase Ciudad tendrá dos propiedades (Nombre y Población). Luego crea un objeto persona y utiliza el serializador del objeto JavaScriptSerializer
para guardar los datos en un archivo.json, más tarde, deserializa el archivo.json y imprímelo en pantalla. Recuerde preparar un método ToString()
para imprimir la clase Persona.
Entrada
Salida
Solución
using System;
using System.IO;
using System.Text;
using System.Web.Script.Serialization;
public class JSONJavaScriptSerializer
{
static string nombreArchivo = "out.json";
public static void Main(string[] args)
{
Persona persona = new Persona()
{
Nombre = "Nauj",
Edad = 26,
Ciudad = new Ciudad()
{
Nombre = "Spain",
Poblacion = 13456766
}
};
Serializar(persona);
persona = Deserializar();
Console.WriteLine(persona.ToString());
Console.ReadLine();
}
public static void Serializar(Persona p)
{
JavaScriptSerializer js = new JavaScriptSerializer();
string json = js.Serialize(p);
File.WriteAllText(nombreArchivo, json);
}
public static Persona Deserializar()
{
JavaScriptSerializer js = new JavaScriptSerializer();
string json = File.ReadAllText(nombreArchivo);
Persona persona = js.Deserialize<Persona>(json);
return persona;
}
public class Persona
{
public string Nombre { get; set; }
public int Edad { get; set; }
public Ciudad Ciudad { get; set; }
public override string ToString()
{
StringBuilder str = new StringBuilder();
str.AppendLine("Nombre: " + Nombre);
str.AppendLine("Edad: " + Edad);
str.AppendLine("Ciudad: " + Ciudad.Nombre);
return str.ToString();
}
}
public class Ciudad
{
public string Nombre { get; set; }
public int Poblacion { get; set; }
}
}