如何将对象直接序列化为JSON.Net中的{% if request.user|has_group:"MOM" %}
<p>User belongs to my group </p>
{% else %}
<p>User doesn't belong to MOM</p>
{% endif %}
实例?通常做的是将对象直接转换为json string ,如下所示:
JObject
然后可以反序列化返回string jsonSTRINGResult = JsonConvert.SerializeObject(someObj);
,如下所示:
JObject
这似乎有效,但似乎这种方式有双重性能影响(序列化然后反序列化)。 JObject jObj = JsonConvert.DeserializeObject<JObject>(jsonSTRINGResult);
内部使用可以某种方式访问的SerializeObject
吗?或者有没有办法直接序列化为JObject
?
答案 0 :(得分:35)
您可以使用FromObject
JObject
静态方法
JObject jObj = JObject.FromObject(someObj)
http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_FromObject.htm
答案 1 :(得分:3)
请注意,@ Eser建议的JObject
路由仅适用于非数组CLR对象。如果您尝试将Array对象转换为JObject
:
未处理的类型&#39; System.InvalidCastException&#39;发生了 在Newtonsoft.Json.dll
附加信息:无法投射类型的对象 &#39; Newtonsoft.Json.Linq.JArray&#39;输入&#39; Newtonsoft.Json.Linq.JObject&#39;。
因此,如果它是一个数组对象,那么您应该使用JArray
,而不是如下所示:
JArray jArray = JArray.FromObject(someArrayObject);
请在代码文件顶部添加using Newtonsoft.Json.Linq;
以使用此代码段。