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类的更多相关文章
- 使用DataContractJsonSerializer类将类型实例序列化为JSON字符串和反序列化为实例对象 分类: JSON 前端 2014-11-10 10:20 97人阅读 评论(1) 收藏
一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...
- WP8解析JSON格式(使用DataContractJsonSerializer类)(推荐)
DataContractJsonSerializer是.NET自带的类,在解析JSON格式的时候使用起来方便快捷,至于生成方面由于暂时没用到就没去看了.使用需要引用System.Runtime.Ser ...
- Silverlight 使用DataContractJsonSerializer序列化与反序列化 Json
环境说明:Silverlight 5.1,.Net Framework 4.0 1.添加引用System.ServiceModel.Web.dll. 因为 System.Runtime.Seria ...
- Json(2)-DataContractJsonSerializer
public static void DataContractSerializeDemo() { User user = new User { UserID = 1 ...
- JSON反序列化实体类
1.定义实体类 [DataContract] public class CustomerWordOrderViewModel { [DataMember] public string Name; [D ...
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- DotNet的JSON序列化与反序列化
JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...
- 在C#中,Json的序列化和反序列化的几种方式总结
在这篇文章中,我们将会学到如何使用C#,来序列化对象成为Json格式的数据,以及如何反序列化Json数据到对象. 什么是JSON? JSON (JavaScript Object Notation) ...
- C#中JSON序列化和反序列化
有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境…… 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...
随机推荐
- OpenJudge/Poj 1083 Moving Tables
1.链接地址: http://poj.org/problem?id=1083 http://bailian.openjudge.cn/practice/1083/ 2.题目: 总时间限制: 1000m ...
- svn 钩子 post-commit 出现255错误解决办法
首先检查代码中是否有可执行命令 #!/bin/sh 然后 检查post-commit权限 post-commit 脚本文件的权限不对,post-commit 脚本必须有 +x 权限. chown sv ...
- easyui 初体验
简介 jQuery EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面.开发者不需要编写复杂的javas ...
- android的liveview装载数据
设置布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:andro ...
- gwt 创建 超链接cell (HyperTextCell)
package com.cnblogs.hooligen.client; import com.google.gwt.cell.client.AbstractCell; import com.goog ...
- C语言之指针
以32为系统为例. 1.指针与地址指针是一种变量,保存了所指向对象的地址.1.1 定义int i = 10;int *p = &i; //定义了一个指针p,它指向一个int型的变量&是 ...
- 用shell查找某个目录下最大文件
网上资料学习: 1.查找当前目录下最大文件(包括子目录里文件): find . -type f -exec stat -c "%s %n" {} \; | sort -nr | h ...
- Android Learning:微信第三方登录
这两天,解决了微信第三方授权登录的问题,作为一个新手,想想也是一把辛酸泪.我想着,就把我的遇到的坑给大家分享一下,避免新手遇到我这样的问题能够顺利避开. 步骤一 微信开发者平台 我开始的解决思路是,去 ...
- Mac下无法推出硬盘
Q:刚刚mac使用移动硬盘,使用后推出时弹出无法推出,提示:Finder正在使用中. 解决:打开#活动监视器#(找不到可以在spotlight中搜索),找到Finder应用,双击,强制退出后再启动Fi ...
- ORACLE VS MYSQL
ORACLE VS MYSQL 一.历史 1. Oracle: 中文译作甲骨文,这是一家传奇的公司,有一个传奇的大老板Larry Ellision. Ellision 32岁还一事无成,读了三个大学 ...