- 浏览: 60264 次
- 性别:
- 来自: 广州
文章分类
最新评论
c#将对象序列化为字符串和将字符串反序列化为对象
asp.net开发中,页面间传值最长用到的是url显式传参,session,application和cookie传值等。对于复杂对象页面传值,如 果不考虑性能影响的话,通常可以使用session或者application。那么页面间如何通过url传递复杂对象呢?正像标题说的那样,对象 -->字符串,然后在目标页面再将从url参数得到的(字符串-->对象)。这个过程可以用下面的代码来实现:
using System;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
/// <summary>
///SerializeUtilities 的摘要说明
/// </summary>
public class SerializeUtilities
{
public SerializeUtilities()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
///
<summary>
/// 序列化 对象到字符串
/// </summary>
/// <param
name="obj">泛型对象</param>
///
<returns>序列化后的字符串</returns>
public static string Serialize<T>(T
obj)
{
try
{
IFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, obj);
stream.Position = 0;
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
stream.Flush();
stream.Close();
return Convert.ToBase64String(buffer);
}
catch (Exception ex)
{
throw new Exception("序列化失败,原因:" + ex.Message);
}
}
/// <summary>
/// 反序列化 字符串到对象
/// </summary>
/// <param
name="obj">泛型对象</param>
/// <param
name="str">要转换为对象的字符串</param>
///
<returns>反序列化出来的对象</returns>
public static T Desrialize<T>(T obj,
string str)
{
try
{
obj = default(T);
IFormatter formatter = new BinaryFormatter();
byte[] buffer = Convert.FromBase64String(str);
MemoryStream stream = new MemoryStream(buffer);
obj = (T)formatter.Deserialize(stream);
stream.Flush();
stream.Close();
}
catch (Exception ex)
{
throw new Exception("反序列化失败,原因:" + ex.Message);
}
return obj;
}
}
demo页面的cs文件代码:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _fan_xuliehua : System.Web.UI.Page
{
protected
void Page_Load(object sender, EventArgs e)
{
//序列化
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Rows.Add(new object[] { 1, "first" });
dt.Rows.Add(new object[] { 2, "second" });
string result = SerializeUtilities.Serialize(dt);
Response.Write(result);
//反序列化
string mystr = result;
DataTable _resDT = new DataTable();
_resDT = (DataTable)SerializeUtilities.Desrialize(_resDT,
mystr);
Response.Write("<br>反序列化结果<br>"
+ _resDT.Rows[0][0].ToString() + ":" +_resDT.Rows[0][1].ToString()
+ "<br>");
Response.Write(_resDT.Rows[1][0].ToString() + ":" +
_resDT.Rows[1][1].ToString() +
"<br>");
}
}
转:http://blog.sina.com.cn/s/blog_69e8baad0100lum7.html
发表评论
-
C#中怎么判断一个数组中是否存在某个数组值 转
2011-10-20 10:02 2165C#中怎么判断一个数组中是否存在某个数组值 作者: 李嘉 ... -
C#开发和调用Web Service (转)
2011-08-12 22:43 11481.1 、 Web Service 基 ... -
profile 实现购物车 实例(二)(转)
2011-07-29 14:27 1030上个例子,我见了两个类,一个商品类。一个购物车类。并把购物 ... -
profile 实现购物车 实例(一)(转)
2011-07-29 14:25 978首先要了解什么是Profile,不了解就查下资料跟MSDN ... -
Profile的简单的配置与操作(转)
2011-07-29 14:20 1016下面由我来给大家配置一个 Profile与 Profile ... -
Profile实现购物车(应用Profile)(转)
2011-07-29 14:15 985上面我已经介绍过了 Profile的配置和简单应用了,如果大 ... -
浅析Microsoft .net PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)
2011-07-29 11:55 1370对于Microsoft .net PetShop程序中的购物车 ... -
大型网站访问性能处理(转集)
2011-07-28 14:14 1041高性能网站性能优化与系统架构(ZT) 说说大型高并发高 ... -
不使用DalFactory和IDAL,支持多种数据库应用
2011-07-27 23:23 2MS的PetShop示例应用程序的“多层架构”被很多.NET开 ... -
ASP.NET页面刷新方法总结(顺便散分)
2011-07-07 15:17 1143先看看ASP.NET页面刷新的实现方法: 第一: ... -
provider: SQL 网络接口, error: 26 解决方法 图
2011-06-03 10:06 6542在建立与服务器的连接时出错。在连接到 SQL Server 2 ... -
Server.Execute和#include相异之处
2011-05-17 13:37 696server 是 ASP 中的一个内置对象, 有一个方法为 ... -
Response.Redirect(),Server.Transfer(),Server.Execute()的区别.docx
2011-05-17 11:48 11621 、 Response.Redirect(): ... -
win7下装不了vs2008的情况
2011-04-09 01:11 667vs2005与vs2008都是镜像文件 ,所以用了虚拟光驱,装 ... -
ASP.NET + SQL 分页存储过程以及对应的类
2011-03-21 16:57 971ASP.NET + SQL 分页存 ... -
ASP.NET 错误页处理
2011-03-19 21:46 981ASP.NET 提供三种用于在出现错误时捕获和响应错误的主 ... -
asp.net 伪静态 html 后面带参数
2011-03-16 21:22 2012例如:faq_1.html?id=2 相关设置请在网上 ... -
DataFormatString的使用
2011-01-05 09:16 844在 我们从业务逻辑层获得数据实体时候,接下来的事情就是要绑定 ... -
ASP.NET 伪静态 静态页 访问不了 方法
2010-12-31 11:14 1969本站基于asp.net+UrlRewriter来实现网站伪 ... -
五种常见的ASP.NET安全缺陷
2010-11-25 23:41 824保证应用程序的安全 ...
相关推荐
C#对象序列化成Json字符串、Json字符串反序列化为类对象
生成xml格式字符串、序列化XML 对象=》XML文本、反序列化 XML文本=》对象 等方法,对象和xml之间的相互转换、datatable方式转换为xml文本的工具类方法 C#语言
所有在反序列化Json字符串时需要一种通用的转换方式,而不是写死的某个类的反序列化,这里介绍的一种思路就是使用dynamic关键字来实现通用反序列化并比较反序列化后的对象是否深度相等即比较对象的各个字段是否相等...
C#将对象序列化成JSON字符串 public string GetJsonString() { List<Product> products = new List(){ new Product(){Name=苹果,Price=5}, new Product(){Name=橘子,Price=5}, new Product(){Name=干柿子,Price...
将Json字符串转化成格式化表示的方法: 字符串反序列化为对象–>对象再序列化为字符串 使用Newtonsoft.Json提供的API,下载地址:http://www.newtonsoft.com/json 很多时候我们需要将json字符串以 { "status": 1, ...
C#字符串和正则表达式参考手册 目 录 第1章 系统处理文本的方式 1 1.1 .NET Framework 1 1.1.1 公共语言运行时 2 1.1.2 .NET Framework类库 3 1.2 文本是一种数据类型 4 1.2.1 C#的数据类型 5 1.2.2 字符和字符集 6 ...
C#或.net json序列化反序列化,适用于与第三方系统做接口用,实体自动转json字符串,json自动转视图
序列化(Serialize)是将对象转换成字节流,...一、将对象序列化为Json格式字符串 首先是正常的序列化操作,对于给定的类: private class MyClass { public int MyNum; public string MyStr; } 将该类的实例序列化
实体类转换成 JSON 字符串,将datatable转换为json,DataTable转换实体类
如在汇编和高级语言的编译程序中,源程序和目标程序都是字符串数据。在事务处理程序中,顾客的信息如姓名、地址等及货物的名称、产地和规格等,都被作为字符串来处理。另外,字符串还具有自身的一些特性。因此,把...
采用动态规划法与回溯法实现了lcs算法,并显示各算法运行时间,便于对不同的输入数据测试这两个算法的优劣。
c#网络通信的序列化 与反序列化代码,通信时遇到,传非字符串数据
一个字符串是一个定义在有限字母表∑上的字符序列。例如,ATCTAGAGA是字母表∑ = {A,C,G,T}上的一个字符串。字符串匹配问题就是在一个大的字符串T中搜索某个字符串P的所有出现位置。其中,T称为文本,P称为模式,T和...
Json 序列化与反序列 C#脚本 //读json ,s是json字符串,Type是要转换成的对象类型 public static object ReadJsonSerializer(string s, Type type) //写Json ,o是对象,Type是o的对象类型,返回Json字符串 ...
在写二叉树序列化与反序列化时发现序列化函数为char* Serialize1(TreeNode *root) 其函数返回类型为char*,但是我在实现的过程中为了更方便的操作添加字符串使用的是C++中string类型的变量,这就导致我最后得到的...
ServiceStack.Text.TupleSerializer 扩展,用于将序列化为定界字符串。 在特定情况下,这允许更多的人类可读值,同时仍然利用使用元组的好处。 自定义元组序列化当前仅适用于json序列化器。 它通过将自定义委托分配...
分步讲解 最长公共子序列求法 1在Excel中找到规律 2规律总结到程序中 3根据规律找到长度 4找到长度的规律 5长度对应的值及对应的公共子序列 这个算法可以应用到文字录入测试的应用中,测试文字录入内容,常用的...
最全面的序列化与反序列化。序列化为对象、XML、字符串等操作.[通用类]
C#帮助类(Helper class)是一种用于封装常用功能的类。它通常包含一组静态方法,这些方法能够...例如,一个日期帮助类可以提供各种日期计算和格式化的方法,一个字符串帮助类可以提供字符串处理和转换的方法,等等。