Juste essayer de créer un type anonyme à partir de JSON sans rien savoir sur les paramètres à l'avance, et de les interpréter pleinement (éventuellement avec des conseils). c'est-à-dire que la valeur "ressemble" à un int, à une chaîne ou à une date.Comment désérialiser en utilisant JSON.Net à un type anonyme?
Le seul moyen que je connaisse est de créer un type anonyme dont vous avez connaissance. Voir la méthode .DeserializeAnonymousType (...) ci-dessous.
Quelqu'un peut-il faire mieux que cela? Merci.
var jsonString = "{\"user_id\": 1, \"user_type\": \"moderator\", \"name\": \"Fred\"}";
JToken root = JObject.Parse(jsonString);
var anonTemplate = new{user_id=0, user_type="", name="" };
var a = JsonConvert.DeserializeAnonymousType(root.ToString(), anonTemplate);
var b = JsonConvert.DeserializeObject<Object>(root.ToString()); // actually turns into a JsonObject which is something differet.
Mise à jour
J'ai téléchargé dynamicduck et je joue avec un peu. Est-ce que cette idée bizarre de "wrapper" de Brian sera utilisable de la manière dont j'ai besoin (sérialisable, etc)?
http://weblogs.asp.net/britchie/archive/2010/08/05/json-net-dynamic-extensions.aspx
http://weblogs.asp.net/britchie/archive/2010/08/03/dynamicduck-duck-typing-in-a-dynamic-world.aspx
Dans le cas de .NET 4, je suppose que vous devriez pouvoir désérialiser l'objet 'dynamic', puis accéder explicitement aux propriétés requises – sll
Comment avez-vous l'intention de consommer cet objet si vous ne savez pas quels paramètres il a ou devrait avoir avoir? – KallDrexx
@sll: un exemple? Pas contre les types dynamiques. Je les utilise à l'occasion. Dans ce cas, ma prochaine question serait de savoir comment convertir un type dynamique en un type anon. Je suis satisfait de l'un ou l'autre de ces chemins, car la performance n'est pas un problème, cependant, j'ai * besoin * d'un type anon dans ce cas (bibliothèques existantes). – sgtz