如何将对象直接序列化到JSON.Net中的JObject
实例?通常的做法是将对象直接转换为json 字符串,如下所示:
string jsonSTRINGResult = JsonConvert.SerializeObject(someObj);
然后可以将反序列化回JObject
,如下所示:
JObject jObj = JsonConvert.DeserializeObject<JObject>(jsonSTRINGResult);
这似乎是可行的,但这种方式似乎有双重性能打击(序列化,然后反序列化)。是否SerializeObject
内部使用JObject
可以访问某种方式?或者有没有办法直接序列化到JObject
?
可以使用JObject
的FromObject
静态方法
JObject jObj = JObject.FromObject(someObj)
http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_FromObject.htm 请注意,Eser接受的答案中建议的JObject
路由将仅对非数组CLR对象起作用。如果您尝试将Array对象转换为JObject
,则会导致以下异常:
如果它是一个数组对象,那么您应该使用类型为"System"的未处理异常。InvalidCastException的发生在Newtonsoft.Json.dll
附加信息:无法强制转换类型的对象"Newtonsoft.Json.Linq。
JArray
,如下面的代码片段所示:
using Newtonsoft.Json.Linq;
JArray jArray = JArray.FromObject(someArrayObject);
使用JToken来组合所有内容(对象和数组)
JToken token = JToken.FromObject(someObjectOrArray);
然后通过token.Type
检查它是哪个JTokenType
(对象,数组或其他)