¿Cómo puedo analizar JSON con C#?

Tengo el siguiente código:

var user = (Dictionary<string, object>)serializer.DeserializeObject(responsecontent);

La entrada en responsecontent es JSON, pero no se analiza correctamente en un objeto. ¿Cómo debo deserializarlo correctamente?

Supongo que no estás utilizando Json.NET (paquete NuGet de Newtonsoft.Json). Si este es el caso, entonces deberías probarlo.

Tiene las siguientes características:

  1. LINQ to JSON
  2. El JsonSerializer para convertir rápidamente sus objetos .NET a JSON y viceversa
  3. Json.NET puede producir opcionalmente JSON bien formateado y con sangría para la depuración o la visualización
  4. Atributos como JsonIgnore y JsonProperty pueden ser añadidos a una clase para personalizar cómo se serializa una clase
  5. Capacidad para convertir JSON a y desde XML
  6. Soporta múltiples plataformas: .NET, Silverlight y Compact Framework

Mira el ejemplo de abajo. En este ejemplo, la clase JsonConvert se utiliza para convertir un objeto a y desde JSON. Tiene dos métodos estáticos para este propósito. Son SerializeObject(Object obj) y DeserializeObject(String json):

Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };

string json = JsonConvert.SerializeObject(product);
//{
//  "Name": "Apple",
//  "Expiry": "2008-12-28T00:00:00",
//  "Price": 3.99,
//  "Sizes": [
//    "Small",
//    "Medium",
//    "Large"
//  ]
//}

Product deserializedProduct = JsonConvert.DeserializeObject(json);
Comentarios (12)

Si tienes a tu disposición .NET 4, echa un vistazo: http://visitmix.com/writings/the-rise-of-json (archive.org)

Aquí hay un fragmento de ese sitio:

WebClient webClient = new WebClient();
dynamic result = JsonValue.Parse(webClient.DownloadString("https://api.foursquare.com/v2/users/self?oauth_token=XXXXXXX"));
Console.WriteLine(result.response.user.firstName);

Ese último Console.WriteLine es bastante dulce...

Comentarios (3)

También puedes echar un vistazo al DataContractJsonSerializer

Comentarios (2)