Comment convertir JObject dans JSON.Net en T
Je sais que je peux utiliser JsonConvert.DeserializeObject<T>(string)
cependant, j'ai besoin d'un aperçu de l'objet _type
(qui peut ne pas être le premier paramètre) afin de déterminer la classe de fonte. Essentiellement, ce que je suis désireux de faire est quelque chose comme:
//Generic JSON processor for an API Client.
function MyBaseType ProcessJson(string jsonText)
{
var obj = JObject.Parse(jsonText);
switch (obj.Property("_type").Value.ToString()) {
case "sometype":
return obj.RootValue<MyConcreteType>();
//NOTE: this doesn't work...
//return obj.Root.Value<MyConcreteType>();
...
}
}
...
//my usage...
var obj = ProcessJson(jsonText);
var instance = obj as MyConcreteType;
if (instance == null) throw new MyBaseError(obj);
source d'informationauteur Tracker1
Vous devez vous connecter pour publier un commentaire.
Première parser le JSON dans un JObject. Ensuite, la recherche de la
_type
attribut à l'aide de LINQ to JSON. Puis basculez en fonction de la valeur et de la fonte à l'aide deToObject<T>
:JSON.NET a pas la capacité de soutenir à la fois requis:
Les premiers critères est rempli par JsonSubTypes
Le second, en spécifiant thh droit MetadataPropertyHandling