Comment analyser JSON avec C# ?

J'ai le code suivant :

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

L'entrée dans responsecontent est JSON, mais elle n'est pas correctement analysée dans un objet. Comment dois-je le désérialiser correctement ?

Je suppose que vous n'utilisez pas [Json.NET][1] (paquet Newtonsoft.Json NuGet). Si c'est le cas, vous devriez l'essayer.

Il a les caractéristiques suivantes :

  1. LINQ à JSON
  2. JsonSerializer pour convertir rapidement vos objets .NET en JSON et inversement.
  3. Json.NET peut éventuellement produire du JSON bien formaté et indenté pour le débogage ou l'affichage.
  4. Des attributs comme JsonIgnore et JsonProperty peuvent être ajoutés à une classe pour personnaliser la façon dont elle est sérialisée.
  5. Possibilité de convertir JSON en XML et inversement.
  6. Prise en charge de plusieurs plateformes : .NET, Silverlight et Compact Framework.

Regardez l'[exemple][2] ci-dessous. Dans cet exemple, la classe [JsonConvert][2] est utilisée pour convertir un objet de et vers JSON. Elle possède deux méthodes statiques à cet effet. Ce sont [SerializeObject(Object obj)][3] et [DeserializeObject(String json)][4] :

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);

[1] : http://www.newtonsoft.com/json [2] : http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_JsonConvert.htm [3] : http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_JsonConvert_SerializeObject.htm [4] : http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_JsonConvert_DeserializeObject__1.htm

Commentaires (12)

Si .NET 4 est disponible pour vous, consultez le site : [http://visitmix.com/writings/the-rise-of-json (archive.org)] [1]

Voici un extrait de ce site :

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);

Cette dernière Console.WriteLine est plutôt sympa...

[1] : https://web.archive.org/web/20150211004910/http://visitmix.com/writings/the-rise-of-json

Commentaires (3)

Vous pouvez également consulter le [DataContractJsonSerializer][1].

[1] : http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx

Commentaires (2)