如何Json序列化对象的部分属性
2016-05-31 00:00
441 查看
在用JSON序列化对象是,会返回这个对象的所有属性键值对,如果某个对象的属性非常多,但是我们需要获取的JSON数据只是其中的两三个属性,这样的情况,我们怎么优化呢?
具体实现方式
调用
在序列化一个对象时, 只序列化了我们想要的两个属性, 实际对象有4个属性
参考资料:如何Json序列化对象的部分属性 http://www.studyofnet.com/news/1234.html
具体实现方式
[code=language-cs] using System; using System.Collections.Generic; using System.Web.Script.Serialization; public class Person { public string Name { get; set; } public int Age { get; set; } public double Meney { get; set; } public double Tex { get; set; } public DateTime Berthday { get; set; } } /**//// <summary> ///简单实体 可变属性序列化器 /// </summary> public class PropertyVariableJsonSerializer { readonly System.Web.Script.Serialization.JavaScriptSerializer _serializer = new JavaScriptSerializer(); /**//// <summary> /// json 序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <param name="propertys"></param> /// <returns></returns> public string Serialize<T>(T obj, List<string> propertys) { _serializer.RegisterConverters(new[] { new PropertyVariableConveter(typeof(T), propertys) }); return _serializer.Serialize(obj); } } public class PropertyVariableConveter : JavaScriptConverter { private readonly List<Type> _supportedTypes = new List<Type>(); public PropertyVariableConveter(Type supportedType, List<string> propertys) { _supportedTypes.Add(supportedType); Propertys = propertys; } private List<string> Propertys { get; set; } public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer) { throw new Exception(" 这个暂时不支持 , 谢谢 "); } public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer) { var dic = new Dictionary<string, object>(); var t = obj.GetType(); var properties = t.GetProperties(); foreach (var ite in properties) { string key = ite.Name; var v = t.GetProperty(key).GetValue(obj, null); if (Propertys == null || Propertys.Count <= 0) { dic.Add(key, v); continue; } if (Propertys.Contains(key)) { dic.Add(key, v); } } return dic; } public override IEnumerable<Type> SupportedTypes { get { return _supportedTypes; } } }
调用
在序列化一个对象时, 只序列化了我们想要的两个属性, 实际对象有4个属性
[code=language-cs] public static void aaa() { var p = new Person { Age = 20, Name = "www.studyofnet.com", Meney = 3, Tex = 1}; var s = new PropertyVariableJsonSerializer(); string result = s.Serialize<Person>(p, new List<string>() { "Name", "Age" }); }
参考资料:如何Json序列化对象的部分属性 http://www.studyofnet.com/news/1234.html
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- 使用 Python 处理 JSON 格式的数据
- XML 与 JSON 优劣对比
- VBA将excel数据表生成JSON文件
- 星外ASP.Net的安全设置相关说明
- newtonsoft.json解析天气数据出错解决方法
- C#、ASP.NET通用扩展工具类之TypeParse
- 实现ASP.NET无刷新下载并提示下载完成的开发思路
- C#、ASP.NET通用扩展工具类之LogicSugar
- vbs 解析json jsonp的方法
- Ruby和Ruby on Rails中解析JSON格式数据的实例教程
- C#、ASP.NET通用工具类IsWhat?(可以判断数字、身份证、数据类型等等)
- Extjs4如何处理后台json数据中日期和时间
- C#实现将类的内容写成JSON格式字符串的方法
- JQuery ajax返回JSON时的处理方式 (三种方式)
- 程序中常用的种代码
- jquery JSON的解析方式示例介绍
- c#版json数据解析示例分享
- ASP JSON类文件的使用方法
- ASP.NET、ASP、PHP、JSP之间有什么区别?