如何打开反代理对象,以便将它们序列化为Json
How can I turn de-proxy objects so that I can serialize them into Json?
我想将一些对象序列化到Json中。有时(并不总是,我不知道是什么触发了它),其中一个对象是代理,这会导致序列化程序抛出循环引用错误,即使没有循环引用:"在序列化类型为‘System.Reflection.RuntimeModule’的对象时检测到循环引用。"
我的代码使用NHibernate和JavaScriptSerializer:
public static string Convert(object xiObject)
{
var lSerialiser = new JavaScriptSerializer();
return lSerialiser.Serialize(xiObject);
}
懒惰加载被认为是关闭的,如:
HasManyToMany(x => x.Managers)
.Not.LazyLoad();
这听起来真的很像这个家伙的问题:http://markmail.org/message/x5a2k7j7qtjmj73g#query:+页码:1+mid:4r5lcggmfrcq5tby+状态:结果
因此,我的计划是使用Json.net而不是JavaScriptSerializer,并在该页面上实现解决方案,但它看起来非常复杂。任何其他建议都很好。
也许你可以在序列化对象之前"取消代理"。本文展示了如何做到这一点-识别NHibernate代理类
IMHO,正确答案是"你没有"
您的实体(可能包含代理)属于您的业务域。您应该序列化DTO,它只包含客户端需要的内容,而不包含更多内容
阿恩德写得很详细。
附言:在映射中设置延迟加载参数也被认为是最佳实践而不是,而是根据正在执行的特定查询来决定是否延迟加载。阿恩德再次解释道。
相关文章:
- 如何在C#中反序列化json对象
- ASP.NET MVC-自动取消序列化JSON Fetch POST
- 如何在 Express/Node.js 中反序列化 JSON 数据
- 无法在 Javascript 中反序列化 JSON 对象
- C# 序列化 JSON 对象中的 JSON 对象
- 从 JavaScript 中的序列化 JSON 对象中提取变量
- 如何在 JQuery 中序列化 JSON 对象
- 为什么我的序列化 JSON 在到达 java 脚本函数参数后被取消序列化
- c#等效于序列化json
- 将函数对象引用作为序列化json传递
- c# Web服务到javascript反序列化JSON对象
- 在反序列化JSON对象时,是否有方法将属性名称转换为小写?
- 在Ext JS存储中反序列化json数据时区分模型类型
- . asmx怪从log4javascript日志反序列化JSON blob
- 如何序列化Json javascript
- 使用JavaScriptSerializer反序列化JSON对象
- 美元http.get获取反序列化JSON,但不能将其赋值给array
- c#反序列化JSON html字符串
- Jquery在ajax调用中没有正确序列化json
- 打字稿:如何使用私有变量反序列化 JSON 对象