当前位置: 首页 > news >正文

大连网站流量优公众号怎么开通直播

大连网站流量优,公众号怎么开通直播,建筑人才网官网96877,涨口碑说做的网站上节补充首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化.创建一个DataTable对象,如下: DataTable dt new DataTable();DataColumn dcName new DataColumn(Name);DataColu…上节补充 首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化.创建一个DataTable对象,如下: DataTable dt new DataTable();DataColumn dcName new DataColumn(Name);DataColumn dcAge new DataColumn(Age);DataColumn dcCity new DataColumn(City);dt.Columns.Add(dcName);dt.Columns.Add(dcAge);dt.Columns.Add(dcCity);for (int i 0; i 10; i){DataRow dr dt.NewRow();dr[0] Name i;dr[1] Age i;dr[2] City i;dt.Rows.Add(dr);} 序列化: string json JsonConvert.SerializeObject(dt);Console.WriteLine(json); 结果: 利用上面得到的序列化字符串反序列化: DataTable dt1 JsonConvert.DeserializeObjectDataTable(json);for (int i 0; i dt1.Rows.Count; i){DataRow dr dt1.Rows[i];Console.WriteLine({0}\t{1}\t{2}\t, dr[0], dr[1], dr[2]);} 结果: 本节内容 1.空值的处理 2.默认值的处理 3.忽略某些属性 4.支持非公共成员 5.日期处理 6.FAQ 预备知识: 要想实现对Json.Net序列化和反序列化的控制,就要用到类JsonSerializerSettings,用法很简单实例化一个对象,并把它赋值给JsonConvert的参数即可. var jSetting new JsonSerializerSettings();string json JsonConvert.SerializeObject(obj,jSetting); 开始之前,我还是先创建一员工类: public class Staff{public string Name { get; set; }public int Age { get; set; }public string Gender { get; set; }public string DepartmentName { get; set; }public Staff Leader { get; set; }} 一.空值的处理 这里的空值指的是引用类型为NULL时,Json.Net如何处理.通过设置jSetting.NullValueHandling的值来确定,该值为枚举类型. NullValueHandling.Ignore忽略为NULL的值 NullValueHandling.Include默认值,包括为NULL的值        实例: Staff jack new Staff { Name Jack, Age 31, Gender Male, DepartmentName Personnel Department, Leader null };var jSetting new JsonSerializerSettings();jSetting.NullValueHandling NullValueHandling.Ignore;string json JsonConvert.SerializeObject(jack,jSetting);Console.WriteLine(json); 结果: 2.默认值的处理  一般是对于值类型的处理,通过设置jSetting.DefaultValueHandling的值来确定,该值为枚举类型. DefaultValueHandling.Ignore序列化和反序列化时,忽略默认值 DefaultValueHandling.Include序列化和反序列化时,包含默认值        给成员设置默任值,用到DefaultValue(value)特性,当然别忘了引入命名空间System.ComponentModel,假设员工的年龄默认值为30 [DefaultValue(30)]public int Age { get; set; } 序列化时我想忽略为默认值的成员 Staff jack new Staff { Name Jack, Age 30, Gender Male, DepartmentName Personnel Department, Leader null };var jSetting new JsonSerializerSettings();jSetting.DefaultValueHandling DefaultValueHandling.Ignore;string json JsonConvert.SerializeObject(jack,jSetting);Console.WriteLine(json); 结果: 3.忽略某些属性 首先介绍Json.Net序列化的模式:OptOut 和 OptIn. OptOut 默认值,类中所有公有成员会被序列化,如果不想被序列化,可以用特性JsonIgnoreOptIn默认情况下,所有的成员不会被序列化,类中的成员只有标有特性JsonProperty的才会被序列化,当类的成员很多,但客户端仅仅需要一部分数据时,很有用    假如客户仅仅需要员工的姓名,此时 [JsonObject(Newtonsoft.Json.MemberSerialization.OptIn)]public class Staff{[JsonProperty]public string Name { get; set; }public int Age { get; set; }public string Gender { get; set; }public string DepartmentName { get; set; }public Staff Leader { get; set; }} 序列化: Staff jack new Staff { Name Jack, Age 30, Gender Male, DepartmentName Personnel Department, Leader null };string json JsonConvert.SerializeObject(jack); 结果: 如果客户不想要员工的领导信息 public class Staff{public string Name { get; set; }public int Age { get; set; }public string Gender { get; set; }public string DepartmentName { get; set; }[JsonIgnore]public Staff Leader { get; set; }} 序列化: Staff tom new Staff { Name Tome, Age 42, Gender Male, DepartmentName Personnel Department};Staff jack new Staff { Name Jack, Age 30, Gender Male, DepartmentName Personnel Department, Leader tom };string json JsonConvert.SerializeObject(jack);Console.WriteLine(json); 结果: 4.支持非公共成员 Json.Net序列化对象时,默认情况下仅仅序列化公有成员,如果想要非公有成员也被序列化,就要在该成员上加特性JsonProperty 5.日期处理   JsonConverters会在序列化和反序列化时被用到。JsonConverters允许手动对Json的控制。当Json的结构很复杂和你想改变一个类型怎么样被序列化时这是非常有用的。当一个JsonConverters被添加到JsonSerializer时它会检查每一要被序列化和反序列化的值并返回CanConvert如果为True,则JsonConverter读和写这个值需要注意的是虽然JsonConverter能够使你可以完全的控制Json的值但是很多的Json.Net序列化的特性被限制像是类型名称和引用处理。所有的JsonConvert都在命名空间 Newtonsoft.Json.Converters下 5.1IsoDateTimeConverter 和 JavaScriptDateTimeConverter 这是Json.Net中自带的两个处理日期的类,默认是IsoDateTimeConverter ,它的格式是yyyy-MM-ddTHH:mm:ss.FFFFFFFK.另一个是JavaScriptTimeConverter,它的格式是 new Date(ticks),其实返回的是一个JavaScript的Date对象.有两种方式来应用JsonConverter,改变Json序列化和反序列化的行为. 5.1.1如果你要序列化的日期格式是统一的,可以考虑如下方式 假设我们为员工添加两个日期类型的成员,出生日期和入职日期 public class Staff{public string Name { get; set; }public int Age { get; set; }public string Gender { get; set; }public string DepartmentName { get; set; }public Staff Leader { get; set; }public DateTime BirthDate { get; set; }public DateTime EmploymentDate { get; set; }} 我们的客户要求日期类型的成员返回javascript的日期对象 Staff jack new Staff { Name Jack, Age 30, Gender Male,DepartmentName Personnel Department, BirthDate new DateTime(1982,2,12), EmploymentDate new DateTime(2010,12,12) };string json JsonConvert.SerializeObject(jack,new JavaScriptDateTimeConverter());Console.WriteLine(json); 结果:   5.1.2如果想要不同的日期类型成员序列化后,以不同的形式显示. 现在我们的客户要求出生日期以ISO标准日期格式返回,入职日期以Javascript的Date对象格式返回,修改我们的员工类 public class Staff{public string Name { get; set; }public int Age { get; set; }public string Gender { get; set; }public string DepartmentName { get; set; }public Staff Leader { get; set; }[JsonConverter(typeof(IsoDateTimeConverter))]public DateTime BirthDate { get; set; }[JsonConverter(typeof(JavaScriptDateTimeConverter))]public DateTime EmploymentDate { get; set; }} 是的,通过特性JsonConverter来实现差异化的序列化: Staff jack new Staff { Name Jack, Age 30, Gender Male,DepartmentName Personnel Department, BirthDate new DateTime(1982,2,12), EmploymentDate new DateTime(2010,12,12) };string json JsonConvert.SerializeObject(jack);Console.WriteLine(json); 结果: 5.2自定义日期格式 客户现在提出要求,希望得到的日期格式是符合中国人习惯的格式.要求返回的格式是2012年4月20日.挑战来了,没有挑战就没有进步,我喜欢挑战.光说是没有用的!先分析一下怎么解决这个问题.我考虑了两种思路.  思路一:研究了一下上面两个日期处理类,发现他们都是继承了基类DateTimeConverterBase,所以我们可以参考IsoDatetimeConverter的实现方式,自己新建一个处理日期格式的转换器类.这种方式的缺点是可能要花大量的时间去研究,比较费时费力.优点就是可以对日期格式随心所欲的控制.  思路二:我又研究了一下IsoDatetimeConverter,发现它的日期格式其实是由于内部DefaultDateTimeFormat yyyy-MM-ddTHH:mm:ss.FFFFFFFK导致,而它也提供了修改日期样式的属性DateTimeFormat,只要我们按照这种格式来写就OK了. Staff jack new Staff { Name Jack, Age 30, Gender Male,DepartmentName Personnel Department, BirthDate new DateTime(1982,2,12), EmploymentDate new DateTime(2010,12,12) };IsoDateTimeConverter dtConverter new IsoDateTimeConverter { DateTimeFormat yyyy年MM月dd日 };string json JsonConvert.SerializeObject(jack,dtConverter);Console.WriteLine(json);  结果: 6.FAQ 1.如何自定义序列化的字段名称? 默认情况下,Json.Net序列化后结果中的字段名称和类中属性的名称一致.如果想自定义序列化后的字段名称,可以使用JsonProperty.例如 public class Person{public int Id { get; set; }public string Name { get; set; }} 默认序列化的结果为: {Id:1,Name:杨过},如果不想用默认的字段名称可以使用如下方式 public class Person {[JsonProperty(PropertyName PersonId)]public int Id { get; set; }[JsonProperty(PropertyName PersonName)]public string Name { get; set; } } 这样序列化的结果为{PersonId:1,PersonName:杨过} 转载于:https://www.cnblogs.com/usharei/archive/2012/04/20/2458858.html
http://www.lebaoying.cn/news/3303.html

相关文章:

  • 免备案域名是什么石家庄谷歌seo
  • 多语言网站源码网站防止被采集
  • 营销网站建设818gx手工活接单在家做有正规网站吗
  • 重庆网站设计网站手机网页如何做
  • 北京医院网站建设wordpress摘要设置
  • 天津专业智能建站工装设计方案网站
  • 做网站推广seo网络优化是什么意思
  • 山东省建设工程网站沧州网络运营中心电话
  • 怎么建立和设计网站wordpress伪静态win
  • 重庆的电子商务网站百度网站如何优化排名
  • 文化馆互联网站建设方案网站代维护
  • 怎样做企业网站一站式平台网站开发技术
  • 网上书城网站开发的结论与不足个旧做网站哪家公司好
  • 网站seo问题简单的介绍网站模板
  • 网站吸引人的功能网站用哪些系统做的比较好用
  • 网页设计与制作实用教程电子资源广州网站优化网站建设
  • 做网站公众号要多少钱做网站的公司 苏迪
  • 浙江建设信息港网站考试成绩查询番禺做网站开发
  • 做网站挣钱的人网站建设3a模型是什么
  • 设计网站要多久物流网站建设与管理规划书
  • 做网站设计用到的软件商丘网红宋飞
  • 做网站需要的设备仅仅建设银行网站打不开
  • 网站建设方案怎么做自己做设计图的app
  • 中国做的最好的网站河北保定网站建设
  • 网站 平台建设情况介绍app动效网站
  • 好企业网站电子商务网站
  • 济南黄河路桥建设集团官方网站百度容易收录哪些网站
  • wordpress拖动西安网站搜索引擎优化
  • 专业网站推荐淮北市官网
  • 企业网站设计注意自己做网站还能挣钱吗