IMPORTANTE: este post es muy antiguo y en la actualidad .NET tiene integradas sus propias clases de manejo de JSON que te permiten hacer la conversión de una clase a JSON y viceversa de manera sencilla, con mayor rendimiento y sin depender de paquetes externos. Te recomendamos que leas mejor este artículo: Cómo manejar JSON en .NET con System.Text.Json.
El formato JSON se ha convertido en los últimos años en uno de los más utilizados por los servicios web para proporcionar información a los desarrolladores. En este artículo te enseñamos cómo podemos utilizarlo en C# de manera sencilla.
JSON vs XML
Algunas ventajas por las cuales se ha popularizado mucho JSON frente a su principal formato competidor hasta el momento (XML) son:
- El uso de una sintaxis más reducida, lo que implica intercambio de datos más pequeños
- La facilidad para poder ser leído por una persona
- La sencillez de su generación (y uso) utilizando tecnologías web
Buscando un proveedor de datos
Para intentar que el artículo te resulte lo más útil posible si necesitas conectar tu aplicación .NET a una API que devuelva JSON, vamos a realizar un ejemplo realista paso a paso.
Para ello hemos seleccionado la API Weathers como base para el ejemplo que veremos a continuación. Esta API, como su propio nombre indica, nos va a proporcionar información meteorológica de la ciudad que le indiquemos (Madrid en nuestro ejemplo).
El código para llamar a la API consiste en realizar una petición GET
a la URL http://weathers.co/api.php?city=Madrid
. Como resultado nos devuelve la siguiente información en formato JSON (en la figura la vemos desplegada):

Como podemos ver en la imagen anterior, nos informa de cuál es la temperatura en Madrid, la humedad y otros datos climatológicos.
Creando la clase Meteorología
Para tratar en C# el resultado anterior, estaremos de acuerdo en que lo mejor sería almacenar cada uno de los datos como una propiedad en una clase. En este caso he decidido llamar a la clase Meteorologia
, pero esta clase no la vamos a crear nosotros a mano, sino que se creará de manera automática siguiendo estos pasos:
- Vamos a realizar una petición a la API, por ejemplo desde el navegador, para copiar la respuesta que nos da.
- Vamos a entrar en json2csharp y vamos a copiar la respuesta de la API.
- Le damos al botón de generar, para que nos cree la clase o clases necesarias para mapear cada uno de los campos del JSON, en propiedades de las clases.
- Copiamos el código de las clases resultantes en Visual Studio, teniendo en cuenta que renombraremos la clase RootObject, con el nombre que nosotros queramos usar, en este caso
Meteorologia
.
- Yo normalmente renombro las propiedades para que tengan la primera letra en mayúsculas, pero esto es una cuestión de estilo y no es obligatorio.
El código resultante de nuestras clases será, en este caso, el siguiente:
public class Meteorologia
{
public string ApiVersion { get; set; }
public Data Data { get; set; }
}
public class Data
{
public string Location { get; set; }
public string Temperature { get; set; }
public string Skytext { get; set; }
public string Humidity { get; set; }
public string Wind { get; set; }
public string Date { get; set; }
public string Day { get; set; }
}
Realizando la petición y el parseo del JSON
El formato JSON está soportado de forma nativa por C#. Sin embargo, en este caso vamos a utilizar una biblioteca externa denominada JSON.Net. Ésta ofrece muchas ventajas frente a la nativa, como por ejemplo:
- Es mucho más rápida en el procesado de ficheros JSON. Tanto es así que la propia Microsoft la utiliza en sus desarrollos.
- Es muy sencilla de usar.
- Permite serializar y deserializar cualquier objeto de .Net desde JSON y viceversa.
Para añadir esta biblioteca a nuestro proyecto, lo podemos hacer bajando el archivo desde su página o bien usando el administrador de paquetes de NuGet:

Finalmente realizamos la petición GET
para recibir la información en JSON y usamos el método JsonConvert.DeserializeObject<>()
para deserializar el JSON en nuestra clase, como se ve a continuación:
Meteorologia meteorologia;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"http://weathers.co/api.php?city=Madrid");
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
var json = reader.ReadToEnd();
meteorologia = JsonConvert.DeserializeObject<Meteorologia>(json);
}
Console.WriteLine("La temperatura en Madrid es: " + meteorologia.Data.Temperature);
Espero que este artículo te parezca interesante y te ayude a incorporar servicios web que utilizan JSON en tus desarrollos.