DataContractJsonSerializer类

  DataContractJsonSerializer类同样是提供JSON序列化的类。而且貌似有几个方法还和XML有点点关系。

  注意用此类要引用System.ServiceModel.Web.dll与System.Runtime.Serialization.dll

  1、属性

  DataContractSurrogate       获取给定 IDataContractSurrogate 实例的当前活动代理项类型。代理项可以扩展序列化或反序列化过程。 
  IgnoreExtensionDataObject     获取一个值,指定在反序列化时是否忽略未知数据以及在序列化时是否忽略 IExtensibleDataObject 接口。
  KnownTypes             获取一个类型集合,这些类型可呈现在使用此 DataContractJsonSerializer 实例序列化的对象图中。 
  MaxItemsInObjectGraph        获取序列化程序通过一次读取或写入调用在对象图中序列化或反序列化的最大项数。

  2、方法

  IsStartObject     已重载。 获取一个值,该值指定序列化程序是否可以读取对象。 
  ReadObject        已重载。 反序列化 JSON(JavaScript 对象表示法)数据,并返回反序列化的对象。 
  WriteEndObject     已重载。 将结束 XML 元素写入可映射到 JavaScript 对象表示法 (JSON) 的 XML 文档。 
  WriteObject       已重载。 将对象序列化为 JavaScript 对象表示法 (JSON) 文档。 
  WriteObjectContent   已重载。 将对象内容写入可映射到 JavaScript 对象表示法 (JSON) 的 XML,而不写入包装元素。 
  WriteStartObject    已重载。 写入开始 XML 元素,以便将对象序列化为可映射到 JavaScript 对象表示法 (JSON) 的 XML。

  例子:

  class Program{static void Main(string[] args){DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Person));//最常用的两个方法string str = "{\"Id\":1,\"Name\":\"刘备\",\"Age\":\"23\"}";Person p;using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))     //构造函数能够接受Stream参数,因此你可以用内存流,文件流等等创建{p = serializer.ReadObject(ms) as Person;}Console.WriteLine(p.Name);      //输出刘备Person p2 = new Person(2, "关羽", 23);byte[] byteArr;using (MemoryStream ms = new MemoryStream()){serializer.WriteObject(ms, p2);byteArr = ms.ToArray();}Console.WriteLine(Encoding.UTF8.GetString(byteArr));    //输出 {"Age":23,"Id":1,"Name":"关羽"}Console.WriteLine(serializer.MaxItemsInObjectGraph);    //2147483647 获取序列化程序通过一次读取或写入调用在对象图中序列化或反序列化的最大项数。Console.WriteLine(serializer.DataContractSurrogate);    //输出 空白Console.WriteLine(serializer.IgnoreExtensionDataObject);    //False 反序列化时是否忽略未知数据以及在序列化时是否忽略 IExtensibleDataObject 接口。 Console.WriteLine(serializer.KnownTypes.Count);     //输出 0  一个类型集合,这些类型可呈现在使用此 DataContractJsonSerializer 实例序列化的对象图中。 //IsStartObject 已重载。 获取一个值,该值指定序列化程序是否可以读取对象。 //WriteEndObject 已重载。 将结束 XML 元素写入可映射到 JavaScript 对象表示法 (JSON) 的 XML 文档。 //WriteObjectContent 已重载。 将对象内容写入可映射到 JavaScript 对象表示法 (JSON) 的 XML,而不写入包装元素。 //WriteStartObject 已重载。 写入开始 XML 元素,以便将对象序列化为可映射到 JavaScript 对象表示法 (JSON) 的 XML。 Console.ReadKey();}}[DataContract]      //对于使用DataContractJsonSerializer类而言,该属性是必须的public class Person{public Person(int id,string name,int age){Id = id;Age = age;Name = name;}[DataMember] //对于使用DataContractJsonSerializer类而言,该属性是必须的public int Id{get;set;}[DataMember] public string Name{get;set;}[DataMember] public int Age{get;set;}}

分类: 前端:Json

DataContractJsonSerializer类相关推荐

  1. 使用.NET框架自带的Json序列化类

    主要用到的类:DataContractJsonSerializer,该类被申明在System.Runtime.Serialization.Json命名空间下,而System.Runtime.Seria ...

  2. ASP.NET MVC4中调用WEB API的四个方法

    当今的软件开发中,设计软件的服务并将其通过网络对外发布,让各种客户端去使用服务已经是十分普遍的做法.就.NET而言,目前提供了Remoting,WebService和WCF服务,这都能开发出功能十分强 ...

  3. 在C#中,Json的序列化和反序列化的几种方式总结

    在C#中,Json的序列化和反序列化的几种方式总结 在这篇文章中,我们将会学到如何使用C#,来序列化对象成为Json格式的数据,以及如何反序列化Json数据到对象. 什么是JSON? JSON (Ja ...

  4. DotNet的JSON序列化与反序列化

    JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...

  5. 如何将C#对象转换为.NET中的JSON字符串?

    我有这样的课程: class MyDate {int year, month, day; }class Lad {string firstName;string lastName;MyDate dat ...

  6. C#中JSON序列化和反序列化

    有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境-- 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...

  7. JSON In Code

    有关于定义,描述之类的文字官方都有解释:http://json.org/json-zh.html 这次主题主要关于JSON的实际应用 目录 JSON in Javascript JSON in Asp ...

  8. ASP.NET中JSON的序列化和反序列化

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...

  9. 程序员Web面试之JSON

    JSON是什么? JSON(JavaScript对象表示法), 是在网络通信下,常用的一种数据表达格式,它有助于我们于一个自描述的,独立的和轻的方式呈现并交换数据.这些数据可以易于和转换为JavaSc ...

最新文章

  1. 《用户体验设计 本质、策略与经验》一导读
  2. 初识Tcl(五):Tcl 循环
  3. 9 个使用前必须再三小心的 Linux 命令
  4. GridView数据导入Excel/Excel数据读入GridView
  5. 关于使用jquery修改hover伪标签的样式
  6. mysql5.4升级5.6_如何在CentOS上升级php5.4至5.6?
  7. 【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研
  8. redhat红帽操作系统下载
  9. Obsidan之数学公式的输入
  10. 2017年域名从Godaddy转移到Namesilo过程全记录
  11. linux忘记root密码,单用户模式修改密码
  12. 职场新境之“甩手组”
  13. A Survey of Shape Feature Extraction Techniques中文翻译
  14. 多御安全浏览器快捷键汇总
  15. yahoo地图 vs Google地图
  16. pyHook pyHook3 区别_成熟男人和幼稚男区别,男人不成熟的5个特征
  17. raid卡超级电容和电池的区别
  18. 教你用Vue 做一个简单的比较两个数字的大小的页面
  19. ubuntu 8.04.2
  20. 架构图到底怎么画?老彭带你走一波!

热门文章

  1. FPS, VSync, Triple Buffering
  2. Project2010的新特性
  3. NumPy - np.meshgrid()
  4. ACM_逆序数(归并排序)
  5. 移动端点击屏幕按钮闪现的灰色底框
  6. 推公式hdu2298
  7. Codeforces 681C:Heap Operations
  8. Build path contains duplicate entry
  9. poj 3417 树形dp+LCA
  10. 关于Response.redirect和Response.End出现线程中止异常的处理