J'utilise avec plaisir la bibliothèque Newtonsoft JSON . Par exemple, je créerais un à JObject
partir d'un objet .NET, dans ce cas une instance d'Exception (pourrait ou non être une sous-classe)
if (result is Exception)
var jobjectInstance = JObject.FromObject(result);
maintenant je sais que la bibliothèque peut désérialiser le texte JSON (c'est-à-dire une chaîne) en un objet
// only works for text (string)
Exception exception = JsonConvert.DeserializeObject<Exception>(jsontext);
mais ce que je recherche c'est:
// now i do already have an JObject instance
Exception exception = jobjectInstance.????
Eh bien, il est clair que je peux retourner du JObject
texte JSON et utiliser la fonctionnalité de désérialisation, mais cela me semble à l'envers.
T
, j'avais besoin de quelque chose commeresult=(value is JObject) ? ((JObject)value).ToObject<T>() : (T)default(T);
pour le convertir avec succès (note -value
est un objet provenant d'une base de données qui pourrait être un JObject ou autre chose dans ce cas, le résultat devrait être nul).jobject.ToObject(myObject.GetType())
si vous ne connaissez pas le type d'objet.De la documentation j'ai trouvé ceci
La définition de classe pour
Person
doit être compatible avec les éléments suivants:Éditer
Si vous utilisez une version récente de JSON.net et n'avez pas besoin d'une sérialisation personnalisée, veuillez consulter la réponse de TienDo ci-dessus (ou ci-dessous si vous me votez: P), ce qui est plus concis.
la source
Trop tard, juste au cas où quelqu'un chercherait un autre moyen:
la source