对象序列化 与反序列化
来源:互联网 发布:python初学者看什么书 编辑:程序博客网 时间:2024/04/20 00:23
1.序列化为二进制流
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Runtime.Serialization.Formatters.Binary;
using
System.IO;
namespace
Common.Serialization.Byte {
public
class
ByteSerializer {
/// <summary>
/// 对象转换为二进制流
/// </summary>
/// <param name="obj">要序列化的对象</param>
/// <returns>对象序列化后的二进制流</returns>
public
static
byte
[] Serialize(
object
obj) {
if
(obj ==
null
) {
return
null
;}
MemoryStream ms =
new
MemoryStream();
try
{
BinaryFormatter formatter =
new
BinaryFormatter();
formatter.Serialize(ms, obj);
return
ms.ToArray();
}
finally
{
ms.Close();
}
}
/// <summary>
/// 二进制流转换为对象
/// </summary>
/// <param name="buffer">二进制流缓存</param>
/// <returns>反序列化后的对象</returns>
public
static
object
Deserialize(
byte
[] buffer) {
if
((buffer ==
null
) || (buffer.Length == 0)) {
return
null
;
}
MemoryStream ms =
new
MemoryStream(buffer);
try
{
BinaryFormatter formatter =
new
BinaryFormatter();
return
formatter.Deserialize(ms);
}
finally
{
ms.Close();
}
}
}
}
2.序列化为XML
using
System;
using
System.Text;
using
System.IO;
namespace
Common.Serialization.Xml {
public
class
XmlSerialization {
/// <summary>
/// 对象转换为XML字符串
/// </summary>
/// <param name="obj">要序列化的对象</param>
/// <returns>对象序列化后的XML字符串</returns>
public
static
string
Serialize(
object
obj) {
if
(obj ==
null
) {
return
null
;
}
MemoryStream ms =
new
MemoryStream();
try
{
System.Xml.Serialization.XmlSerializer formatter =
new
System.Xml.Serialization.XmlSerializer(obj.GetType());
formatter.Serialize(ms, obj);
return
Encoding.Default.GetString(ms.ToArray());
}
finally
{
ms.Close();
}
}
/// <summary>
/// XML字符串转换为对象
/// </summary>
/// <param name="xml">XML字符串</param>
/// <param name="targetType">要反序列化为的对象类型</param>
/// <returns>反序列化后的对象</returns>
public
static
object
Deserialize(
string
xml, Type targetType) {
if
((xml ==
null
) || (xml.Length == 0)) {
return
null
;
}
MemoryStream ms =
new
MemoryStream(Encoding.Default.GetBytes(xml));
try
{
System.Xml.Serialization.XmlSerializer formatter =
new
System.Xml.Serialization.XmlSerializer(targetType);
return
formatter.Deserialize(ms);
}
finally
{
ms.Close();
}
}
}
}
3.序列化为JSON
using
System;
using
System.Text;
using
System.IO;
using
System.Runtime.Serialization.Json;
namespace
Common.Serialization.Json {
public
class
JsonSerializer {
/// <summary>
/// 对象转换为JSON字符串
/// </summary>
/// <param name="obj">要序列化的对象</param>
/// <returns>对象序列化后的JSON字符串</returns>
public
static
string
Serialize(
object
obj) {
if
(obj ==
null
) {
return
null
;}
MemoryStream ms =
new
MemoryStream();
try
{
DataContractJsonSerializer formatter =
new
DataContractJsonSerializer(obj.GetType());
formatter.WriteObject(ms, obj);
return
Encoding.UTF8.GetString(ms.ToArray());
}
finally
{
ms.Close();
}
}
/// <summary>
/// JSON字符串转换为对象
/// </summary>
/// <param name="json">JSON字符串</param>
/// <param name="targetType">要反序列化为的对象类型</param>
/// <returns>反序列化后的对象</returns>
public
static
object
Deserialize(
string
json, Type targetType) {
if
((json ==
null
) || (json.Length == 0)) {
return
null
;}
MemoryStream ms =
new
MemoryStream(Encoding.UTF8.GetBytes(json));
try
{
DataContractJsonSerializer formatter =
new
DataContractJsonSerializer(targetType);
return
formatter.ReadObject(ms);
}
finally
{
ms.Close();
}
}
}
}
- 对象序列化与反序列化
- 序列化与反序列化对象
- 对象序列化与反序列化
- 对象序列化与反序列化
- 对象序列化 与反序列化
- 对象序列化与反序列化
- 对象序列化与反序列化
- 对象序列化与反序列化
- 对象序列化与反序列化
- C#对象反序列化与对象序列化
- 序列化与反序列
- 序列化与反序列
- 对象与XML,序列化与反序列化
- C#对象的 Xml序列化与反序列化
- 如何序列化与反序列化复杂对象
- Symbian 流的对象序列化与反序列化
- Symbian 流的对象序列化与反序列化
- C#中对象的序列化与反序列化
- oracle导入导出
- linux音频alsa-uda134x驱动分析之三(解码器)
- git revert 和reset的区别
- Wireless Networking in the Developing World (Second Edition)
- 可以输入长文本的弹窗
- 对象序列化 与反序列化
- 内核的可剥夺性和函数的可重入
- review board 安装和使用系列 ---(一)RB简介
- CGI编程小例子
- 一步一步学习hadoop(九)
- c primer plus 第七章 3
- 走技术线,还是技术管理线?
- ubuntu 安装 Tomcat7
- optimizer_features_enable