C# 对象的序列化与反序列化 (DataContractJsonSerializer)
项目引用
System.Runtime.Serialization.dll
添加命名空间
using System.Runtime.Serialization.Json;
1.序列化对象,得到Json字符串
public static string WriteFromObject<T>(T obj) where T : class
{
DataContractJsonSerializer dcjs = new DataContractJsonSerializer(typeof(T));
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
dcjs.WriteObject(ms, obj);
//ms.Position = 0;
//byte[] bt = new byte[ms.Length];
//ms.Read(bt, 0, bt.Length);
//return Encoding.Default.GetString(bt);
return Encoding.Default.GetString(ms.ToArray());
}
}
2.反序列化对象 ,从Json字符串中得到对象
public static T ReadToObject<T>(string json) where T : class
{
DataContractJsonSerializer dcjs = new DataContractJsonSerializer(typeof(T));
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(Encoding.Default.GetBytes(json)))
{
return dcjs.ReadObject(ms) as T;
}
}
3.对象示例
/// 实现可序列化数据协定
[System.Runtime.Serialization.DataContract]
/// 识别方法返回类型
[System.Runtime.Serialization.KnownType("KnownType")]
public class ClassSample
{
/// 可被序列化成员
[System.Runtime.Serialization.DataMember]
public int DataMember { get; set; }
/// 枚举成员也要序列化
[System.Runtime.Serialization.EnumMember]
public Example EnumMember;
/// 非数据协定成员忽略序列化
[System.Runtime.Serialization.IgnoreDataMember]
public int IgnoreDataMember { get; set; }
/// 序列化时可缺少的字段
[System.Runtime.Serialization.OptionalField]
public int OptionalField; //反序列化后立即调用
[System.Runtime.Serialization.OnDeserialized]
//反序列化时调用
[System.Runtime.Serialization.OnDeserializing]
//在序列化该对象图后是否调用该方法
[System.Runtime.Serialization.OnSerialized]
//在对象序列化前调用此方法
[System.Runtime.Serialization.OnSerializing]
public KnownType KnownType()
{
return null;
}
}
[System.Runtime.Serialization.DataContract]
public enum Example
{ }
[System.Runtime.Serialization.DataContract]
public class KnownType
{ }
C# 对象的序列化与反序列化 (DataContractJsonSerializer)的更多相关文章
- java中对象的序列化和反序列化
[对象的序列化和反序列化 ] 1.定义:序列化--将对象写到一个输出流中.反序列化则是从一个输入流中读取一个对象.类中的成员必须是可序列化的,而且要实现Serializable接口,这样的类的对象才能 ...
- Java对象的序列化与反序列化
序列化与反序列化 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程.一般将一个对象存储至一个储存媒介,例如档案或是记亿体缓冲等.在网络传输过程中,可以是字节或是 ...
- Java对象的序列化和反序列化[转]
Java基础学习总结--Java对象的序列化和反序列化 一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化.把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用 ...
- 【Java IO流】对象的序列化和反序列化
对象的序列化和反序列化 1)对象序列化,就是将Object对象转换成byte序列,反之叫对象的反序列化. 2)序列化流(ObjectOutputStream),是字节的过滤流—— writeObjec ...
- Java对象的序列化与反序列化-Json篇
说到Java对象的序列化与反序列化,我们首先想到的应该是Java的Serializable接口,这玩意在两个系统之间的DTO对象里面可能会用到,用于系统之间的数据传输.或者在RPC(远程方法调用)时可 ...
- 利用JavaScriptSerializer类 进行Json对象的序列化和反序列化和过滤
项目下载:JavaScriptSerializer_对JSON对象序列化与反序列化及过滤器 利用<JavascriptSerializer类> 进行Json对象的序列化和反序列化 1. 首 ...
- 对象的序列化与反序列化---IO学习笔记(四)
对象的序列化,反序列化 对象的序列化: 就是将Object转换成byte序列 对象的反序列化: 将byte序列转换成Object 序列化流.反序列化流 序列化流(ObjectOutputStream) ...
- 第12讲-Java中的IO操作及对象的序列化与反序列化
1.知识点 1.1.课程回顾 1.2.本章重点 1.2.1 io操作 1.2.2 对象的序列化与反序列化 2.具体内容 2.1.Java IO 2.1.1.什么是IO IO其实就是输入.输出 I ...
- (记录)Jedis存放对象和读取对象--Java序列化与反序列化
一.理论分析 在学习Redis中的Jedis这一部分的时候,要使用到Protostuff(Protobuf的Java客户端)这一序列化工具.一开始看到序列化这些字眼的时候,感觉到一头雾水.于是,参考了 ...
随机推荐
- 【BZOJ2456】mode 神奇的卡内存题
以后把题解放在前面,估计没人看题解先看题... 内存1M,4个int(其实对内存的概念十分模糊),众数即为出现次数最多的数,可以用抵消的思想(但是众数不是可以是一大坨么...) #include &l ...
- Android -- 自定义带进度条的按钮
1. 实现了一个带进度条的按钮,完成后显示提示信息,并设置按钮为不可再次被点击
- AppStore上传条例
1. 条款和条件1.1 为App Store开发程序,开发者必须遵守 Program License Agreement (PLA).人机交互指南(HIG)以及开发者和苹果签订的任何协议和合同.以下规 ...
- thinkphp 联表查询,排序
$info =M('productbase'); $info= $info->alias('a')->field('a.id,cid,title,address,protype,time, ...
- oracle中number类型的数据使用as string 得到的值为null
1,如果数据的运行时类型(和数据库字段类型相同)不是字符串类型,比如number/date等,将ds.Tables[0].Rows[i][j] 调用 as string 时,不管 这个字段是否有值,这 ...
- Centos 安装了 Wkhtmltopdf 却依旧显示 无法打印pdf
Odoo里判断wkhtmlpdf是否安装的代码在 openerp/tools/misc.py 文件中: def find_in_path(name): path = os.environ.get('P ...
- java容器学习
容器是java中重要的一部分,其接口的结构如下 Collection | ------------------ Map | | | Set List HashMap | HashSet 顾名思义,容器 ...
- php吧字符串直接转换成数组处理
$str ='123456'; echo strlen($str) - 1; echo '<br>'; echo $str{strlen($str) - 1}; echo '<br& ...
- 14交互活动:XHTML表单
表单基本上就是带有一块输入信息区域的网页.当提交表单时,表单中的信息被打成一个数据包发送给web服务器,web应用程序对之经行处理.处理完成后,可以获得另一个相应页面. 使用<form>元 ...
- Opensuse enable sound and mic card
Install application pavucontrol Run pavucontrol You will see the configuration about sound card and ...