1. Introducción a Newtonsoft.Json
Newtonsoft.Json (comúnmente conocido como Json.NET) es una biblioteca de código abierto para serializar y deserializar JSON dentro del ecosistema .NET
- Su primera versión Json.NET 1.0.1 salió en 2006, las versiones principales han superado la versión 10
- Originalmente compatible con .NET 2.0, funciona con casi todos los marcos .NET (Framework/.NET Core/.NET 5+)
- Ensamblado:
Newtonsoft.Json.dll, se instala mediante NuGet - El código fuente se alojó en CodePlex en sus inicios, actualmente está en GitHub, muy usado en proyectos empresariales
2. ¿Qué es JSON
JSON(JavaScript Object Notation)
- Formato ligero de intercambio de datos textual y agnóstico al lenguaje, no es exclusivo de JavaScript
- Estructura básica: par clave‑valor
key:value;admite objetos anidados{}y arrays[]
{"webname":"FoxDevelop","website":"foxdevelop.com","age":4,"students":[{"name":"tom"},{"name":"bill"}]}Lenguaje del código: C# (cs)
II. Definición de clases entidad (adaptadas a la estructura JSON)
Person.cs (objeto estudiante)
namespace NewtonsoftDemo
{
public class Person
{
public string name { set; get; }
}
}Lenguaje del código: C# (cs)
WebInfo.cs (objeto raíz)
namespace NewtonsoftDemo
{
public class WebInfo
{
public string webname { set; get; }
public string website { set; get; }
public int age { set; get; }
public Person[] students { set; get; }
}
}Lenguaje del código: C# (cs)
Ejemplo‑Serializar objeto a JSON
protected void Page_Load(object sender, EventArgs e)
{
// 1. Instanciar la entidad y asignar valores
WebInfo webInfo = new WebInfo();
webInfo.age = 4;
webInfo.webname = "FoxDevelop";
webInfo.website = "foxdevelop.com";
webInfo.students = new Person[]
{
new Person { name = "TOM" },
new Person { name = "JACK" }
};
// 2. Código de bajo nivel Newtonsoft.Json: serialización con JsonWriter
StringWriter sw = new StringWriter();
JsonWriter writer = new JsonWriter(sw);
new JsonSerializer().Serialize(writer, webInfo);
string json = sw.GetStringBuilder().ToString();
}Lenguaje del código: C# (cs)
Sintaxis simplificada para uso diario
Newtonsoft.Json trae métodos estáticos auxiliares, no hace falta crear manualmente JsonWriter:
// Serialización en una sola línea, muy usada en desarrollo
string json = JsonConvert.SerializeObject(webInfo);Lenguaje del código: C# (cs)
Resultado JSON de salida
{
"webname": "FoxDevelop",
"website": "foxdevelop.com",
"age": "4",
"students": [
{"name":"TOM"},
{"name":"JACK"}
]
}Lenguaje del código: C# (cs)
Otros puntos
- System.Text.Json:biblioteca nativa de Microsoft desde .NET Core 3.0; los proyectos antiguos de .NET Framework siguen usando mucho Newtonsoft.Json
- Características: alias de propiedades, ignorar campos, formato de fechas, manejo de referencias circulares y otras funciones avanzadas
Introducción