Comment sérialiser un objet directement dans une instance JObject
dans JSON.Net? Ce qui est généralement fait est de convertir l'objet directement en json string comme ceci:
string jsonSTRINGResult = JsonConvert.SerializeObject(someObj);
On pourrait alors désérialiser ce retour à un JObject
comme suit:
JObject jObj = JsonConvert.DeserializeObject<JObject>(jsonSTRINGResult);
Cela semble fonctionner, mais il semblerait que cette façon ait un double impact sur les performances (sérialiser puis désérialiser). SerializeObject
utilise-t-il en interne un JObject
auquel on peut accéder d'une manière ou d'une autre? Ou existe-t-il un moyen de sérialiser directement vers un JObject
?
Vous pouvez utiliser FromObject
méthode statique de JObject
JObject jObj = JObject.FromObject(someObj)
http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_FromObject.htm
Veuillez noter que la route JObject
suggérée par @Eser ne fonctionnera que pour les objets CLR non-tableau. Il en résulte une exception ci-dessous si vous essayez de convertir un objet Array en JObject
:
Une exception non gérée de type "System.InvalidCastException" s'est produite dans Newtonsoft.Json.dll
Informations supplémentaires: impossible de caster un objet de type 'Newtonsoft.Json.Linq.JArray' en type 'Newtonsoft.Json.Linq.JObject'.
Donc, dans le cas où il s'agit d'un objet tableau, vous devez plutôt utiliser JArray
comme indiqué ci-dessous:
JArray jArray = JArray.FromObject(someArrayObject);
Merci d'inclure using Newtonsoft.Json.Linq;
en haut de votre fichier de code pour utiliser cet extrait de code.