asp.net – 使用json仅序列化对象的一部分
发布时间:2020-12-16 00:10:19 所属栏目:asp.Net 来源:网络整理
导读:我有一个名为MyObject的对象,它有几个属性. MyList是MyObject的列表,我使用linq查询填充,然后将MyList序列化为json.我最终得到这样的东西 ListMyObject MyList = new ListMyObject(); MyList = TheLinqQuery(TheParam); var TheJson = new System.Web.Script
我有一个名为MyObject的对象,它有几个属性. MyList是MyObject的列表,我使用linq查询填充,然后将MyList序列化为json.我最终得到这样的东西
List<MyObject> MyList = new List<MyObject>(); MyList = TheLinqQuery(TheParam); var TheJson = new System.Web.Script.Serialization.JavaScriptSerializer(); string MyJson = TheJson.Serialize(MyList); 我想要做的是仅序列化MyObject的一部分.例如,我可能有Property1,Property2 …… Propertyn,我希望MyJson只包含Property3,Property5和Property8. 我想到了一种方法,通过创建一个只有我想要的属性的新对象,然后从那里创建一个新的序列化列表.这是最好的方式还是有更好/更快的方式? 谢谢. 解决方法// simple dummy object just showing what "MyObject" could potentially be public class MyObject { public String Property1; public String Property2; public String Property3; public String Property4; public String Property5; public String Property6; } // custom converter that tells the serializer what to do when it sees one of // the "MyObject" types. Use our custom method instead of reflection and just // dumping properties. public class MyObjectConverter : JavaScriptConverter { public override object Deserialize(IDictionary<string,object> dictionary,Type type,JavaScriptSerializer serializer) { throw new ApplicationException("Serializable only"); } public override IDictionary<string,object> Serialize(object obj,JavaScriptSerializer serializer) { // create a variable we can push the serailized results to Dictionary<string,object> result = new Dictionary<string,object>(); // grab the instance of the object MyObject myobj = obj as MyObject; if (myobj != null) { // only serailize the properties we want result.Add("Property1",myobj.Property1); result.Add("Property3",myobj.Property3); result.Add("Property5",myobj.Property5); } // return those results return result; } public override IEnumerable<Type> SupportedTypes { // let the serializer know we can accept your "MyObject" type. get { return new Type[] { typeof(MyObject) }; } } } 然后你在哪里序列化: // create an instance of the serializer JavaScriptSerializer serializer = new JavaScriptSerializer(); // register our new converter so the serializer knows how to handle our custom object serializer.RegisterConverters(new JavaScriptConverter[] { new MyObjectConverter() }); // and get the results String result = serializer.Serialize(MyObjectInstance); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.Net MVC,使用javascript提交表单
- asp.net-mvc-2 – ASP.NET MVC 2和PRG模式
- asp.net – 在PreRender上添加控件页面
- 从ASP.NET中的标准程序集覆盖资源
- asp.net – 为什么context.Request.Context.Authentication
- asp.net-mvc – ASP.Net MVC的LoginStatus?
- asp.net-mvc-3 – Appharbor URL中的端口号导致页面/内容无
- asp.net-mvc – 条件数据注释
- asp.net-mvc – 如何在MVC 5A应用程序中实现OWIN和Katana
- asp.net – Javascript之前asp:ButtonField点击
推荐文章
站长推荐
- asp.net-mvc-3 – MVC3下载单个文件
- asp.net – 使用Web Api,SignalR,MVC和OWIN的Nin
- asp.net-mvc – 如何在扩展方法中使用HTML帮助器
- asp.net-web-api – 带有PUT或PATCH谓词的ASP.NE
- asp.net – VS插件:查看标记.存在这样的事情吗?
- asp.net-web-api – 如何自定义认证我自己的表在
- ASP.NET MVC3角色和权限管理 – >具有运行时权限
- asp.net-mvc – ASP.NET MVC – 从视图部分更新模
- 哪些ASP.NET生命周期事件可以异步?
- 在ASP.Net上为每个Web请求创建dbcontext的成本
热点阅读