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;}}
DataContractJsonSerializer类相关推荐
- 使用.NET框架自带的Json序列化类
主要用到的类:DataContractJsonSerializer,该类被申明在System.Runtime.Serialization.Json命名空间下,而System.Runtime.Seria ...
- ASP.NET MVC4中调用WEB API的四个方法
当今的软件开发中,设计软件的服务并将其通过网络对外发布,让各种客户端去使用服务已经是十分普遍的做法.就.NET而言,目前提供了Remoting,WebService和WCF服务,这都能开发出功能十分强 ...
- 在C#中,Json的序列化和反序列化的几种方式总结
在C#中,Json的序列化和反序列化的几种方式总结 在这篇文章中,我们将会学到如何使用C#,来序列化对象成为Json格式的数据,以及如何反序列化Json数据到对象. 什么是JSON? JSON (Ja ...
- DotNet的JSON序列化与反序列化
JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...
- 如何将C#对象转换为.NET中的JSON字符串?
我有这样的课程: class MyDate {int year, month, day; }class Lad {string firstName;string lastName;MyDate dat ...
- C#中JSON序列化和反序列化
有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境-- 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...
- JSON In Code
有关于定义,描述之类的文字官方都有解释:http://json.org/json-zh.html 这次主题主要关于JSON的实际应用 目录 JSON in Javascript JSON in Asp ...
- ASP.NET中JSON的序列化和反序列化
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- 程序员Web面试之JSON
JSON是什么? JSON(JavaScript对象表示法), 是在网络通信下,常用的一种数据表达格式,它有助于我们于一个自描述的,独立的和轻的方式呈现并交换数据.这些数据可以易于和转换为JavaSc ...
最新文章
- 《用户体验设计 本质、策略与经验》一导读
- 初识Tcl(五):Tcl 循环
- 9 个使用前必须再三小心的 Linux 命令
- GridView数据导入Excel/Excel数据读入GridView
- 关于使用jquery修改hover伪标签的样式
- mysql5.4升级5.6_如何在CentOS上升级php5.4至5.6?
- 【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研
- redhat红帽操作系统下载
- Obsidan之数学公式的输入
- 2017年域名从Godaddy转移到Namesilo过程全记录
- linux忘记root密码,单用户模式修改密码
- 职场新境之“甩手组”
- A Survey of Shape Feature Extraction Techniques中文翻译
- 多御安全浏览器快捷键汇总
- yahoo地图 vs Google地图
- pyHook pyHook3 区别_成熟男人和幼稚男区别,男人不成熟的5个特征
- raid卡超级电容和电池的区别
- 教你用Vue 做一个简单的比较两个数字的大小的页面
- ubuntu 8.04.2
- 架构图到底怎么画?老彭带你走一波!