Nic*_*sen 29 c# serialization json json.net
如何将对象直接序列化为JObjectJSON.Net中的实例?通常做的是将对象直接转换为json 字符串,如下所示:
string jsonSTRINGResult = JsonConvert.SerializeObject(someObj);
Run Code Online (Sandbox Code Playgroud)
然后,可以反序列化是回JObject如下:
JObject jObj = JsonConvert.DeserializeObject<JObject>(jsonSTRINGResult);
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但似乎这种方式有双重性能影响(序列化然后反序列化).SerializeObject内部是否使用JObject可以某种方式访问的?或者有没有办法直接序列化为JObject?
Ese*_*ser 43
你可以使用FromObject静态方法JObject
JObject jObj = JObject.FromObject(someObj)
Run Code Online (Sandbox Code Playgroud)
http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_FromObject.htm
fra*_*ers 11
要组合所有内容:将 JToken 用于所有内容(对象和数组)。
JToken token = JToken.FromObject(someObjectOrArray);
Run Code Online (Sandbox Code Playgroud)
然后检查它是通过token.Type哪个JTokenType(对象、数组或其他)。
请注意,JObject@ Eser建议的路由仅适用于非数组CLR对象。如果尝试将Array对象转换为,则会导致以下异常JObject:
Newtonsoft.Json.dll中发生了'System.InvalidCastException'类型的未处理异常
附加信息:无法将类型为“ Newtonsoft.Json.Linq.JArray”的对象转换为类型为“ Newtonsoft.Json.Linq.JObject”的对象。
因此,如果它是一个数组对象,则应使用JArray如下所示的方法:
JArray jArray = JArray.FromObject(someArrayObject);
Run Code Online (Sandbox Code Playgroud)
请using Newtonsoft.Json.Linq;在您的代码文件顶部添加以使用此代码段。
| 归档时间: |
|
| 查看次数: |
21423 次 |
| 最近记录: |