JSON.NetでJObject
インスタンスにオブジェクトを直接シリアル化するにはどうすればよいですか?通常行われるのは、オブジェクトをjson stringに直接変換することです。
string jsonSTRINGResult = JsonConvert.SerializeObject(someObj);
次のようにdeserializeをJObject
に戻すことができます:
JObject jObj = JsonConvert.DeserializeObject<JObject>(jsonSTRINGResult);
それはうまくいくように思えますが、この方法ではパフォーマンスが2倍になります(シリアライズしてからデシリアライズ)。 SerializeObject
は内部で何らかの方法でアクセスできるJObject
を使用していますか?または、JObject
に直接シリアル化する方法はありますか?
FromObject
のJObject
静的メソッドを使用できます
JObject jObj = JObject.FromObject(someObj)
http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_FromObject.htm
@Eserによって提案されたJObject
ルートは、非配列CLRオブジェクトに対してのみ機能することに注意してください。 ArrayオブジェクトをJObject
に変換しようとすると、以下の例外が発生します。
Newtonsoft.Json.dllで「System.InvalidCastException」タイプの未処理の例外が発生しました
追加情報:「Newtonsoft.Json.Linq.JArray」タイプのオブジェクトを「Newtonsoft.Json.Linq.JObject」タイプにキャストできません。
したがって、配列オブジェクトの場合は、次に示すように、代わりにJArray
を使用する必要があります。
JArray jArray = JArray.FromObject(someArrayObject);
このコードスニペットを使用するには、コードファイルの先頭にusing Newtonsoft.Json.Linq;
を含めてください。