有没有一种方法可以使JavaScriptSerializer忽略某些通用类型的属性?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有一种方法可以使JavaScriptSerializer忽略某些通用类型的属性?相关的知识,希望对你有一定的参考价值。
我正在为模型使用实体框架,并且需要将它们序列化为JSON。问题是EF包含了所有这些非常好的导航集合(例如,我的User模型具有Orders属性),当我序列化这些对象时,序列化程序会尝试获取这些集合的值,而EF则大喊大叫尝试使用已处置的上下文
ObjectContext实例已被处置,不能再用于需要连接的操作。
[我知道我可以用[ScriptIgnore]装饰属性,以使序列化程序不理会它们,但这就是EF的问题,因为它会生成这些属性的代码。
是否有办法使序列化程序不对通用类型为EntityCollection <>的属性进行序列化?
或者,还有一种方法可以使用另一个健壮的JSON库(例如JSON.Net?)>
我正在为模型使用实体框架,并且需要将它们序列化为JSON。问题是EF包含了所有这些非常好的导航集合(例如,我的User模型具有...
您可以声明一个自定义合同解析器,该解析器指示要忽略的属性。这是基于the answer I found here的通用“可忽略”:
如果仅是将这些对象返回给客户端,为什么不使用匿名类仅返回需要的内容呢?
这是我的小贡献。 @drzaus答案的一些更改。说明
添加到@drzaus's answer,我修改了IsIgnored
方法以使其更通用-
如果使用JSON.NET,则可以使用JsonIgnore之类的属性来忽略某些属性。在序列化通过NHibernate加载的对象时,我会使用此功能。
以上是关于有没有一种方法可以使JavaScriptSerializer忽略某些通用类型的属性?的主要内容,如果未能解决你的问题,请参考以下文章