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 :
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<T>(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<Product>(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
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
Vous pouvez également consulter le [DataContractJsonSerializer][1].