- 浏览: 61856 次
- 性别:
- 来自: 广州
文章分类
最新评论
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 2236C#中怎么判断一个数组中是否存在某个数组值 作者: 李嘉 ... -
C#开发和调用Web Service (转)
2011-08-12 22:43 11851.1 、 Web Service 基 ... -
profile 实现购物车 实例(二)(转)
2011-07-29 14:27 1056上个例子,我见了两个类,一个商品类。一个购物车类。并把购物 ... -
profile 实现购物车 实例(一)(转)
2011-07-29 14:25 1009首先要了解什么是Profile,不了解就查下资料跟MSDN ... -
Profile的简单的配置与操作(转)
2011-07-29 14:20 1052下面由我来给大家配置一个 Profile与 Profile ... -
Profile实现购物车(应用Profile)(转)
2011-07-29 14:15 1017上面我已经介绍过了 Profile的配置和简单应用了,如果大 ... -
浅析Microsoft .net PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)
2011-07-29 11:55 1400对于Microsoft .net PetShop程序中的购物车 ... -
大型网站访问性能处理(转集)
2011-07-28 14:14 1076高性能网站性能优化与系统架构(ZT) 说说大型高并发高 ... -
不使用DalFactory和IDAL,支持多种数据库应用
2011-07-27 23:23 2MS的PetShop示例应用程序的“多层架构”被很多.NET开 ... -
ASP.NET页面刷新方法总结(顺便散分)
2011-07-07 15:17 1188先看看ASP.NET页面刷新的实现方法: 第一: ... -
provider: SQL 网络接口, error: 26 解决方法 图
2011-06-03 10:06 6597在建立与服务器的连接时出错。在连接到 SQL Server 2 ... -
Server.Execute和#include相异之处
2011-05-17 13:37 727server 是 ASP 中的一个内置对象, 有一个方法为 ... -
Response.Redirect(),Server.Transfer(),Server.Execute()的区别.docx
2011-05-17 11:48 11991 、 Response.Redirect(): ... -
win7下装不了vs2008的情况
2011-04-09 01:11 717vs2005与vs2008都是镜像文件 ,所以用了虚拟光驱,装 ... -
ASP.NET + SQL 分页存储过程以及对应的类
2011-03-21 16:57 1005ASP.NET + SQL 分页存 ... -
ASP.NET 错误页处理
2011-03-19 21:46 1007ASP.NET 提供三种用于在出现错误时捕获和响应错误的主 ... -
asp.net 伪静态 html 后面带参数
2011-03-16 21:22 2044例如:faq_1.html?id=2 相关设置请在网上 ... -
DataFormatString的使用
2011-01-05 09:16 880在 我们从业务逻辑层获得数据实体时候,接下来的事情就是要绑定 ... -
ASP.NET 伪静态 静态页 访问不了 方法
2010-12-31 11:14 2005本站基于asp.net+UrlRewriter来实现网站伪 ... -
五种常见的ASP.NET安全缺陷
2010-11-25 23:41 867保证应用程序的安全 ...
相关推荐
通过使用如Newtonsoft.Json库的JsonConvert类,可以将C#对象序列化为JSON字符串,这在需要跨平台或网络传输数据时非常有用。 5. **XML序列化**: - XML序列化与JSON类似,但通常用于更复杂的结构。System.Xml....
无论是将对象序列化为JSON字符串,还是将JSON字符串反序列化为对象,都可以通过简单的API调用完成,并且支持各种自定义选项以适应不同需求。在实际开发中,正确理解和运用这些功能能够提高代码的效率和可维护性。
本篇文章将详细介绍如何使用C#实现实体类与字符串之间的互相转换,主要涉及到了C#的反射(Reflection)技术以及对象和字符串的转换技巧。 首先,我们来看如何将实体类转换为字符串。这个过程通常涉及到遍历实体类的...
在提供的代码片段中,我们看到一个名为`GetJsonString`的方法,它使用`JavaScriptSerializer`类将`ProductList`对象序列化为JSON字符串。首先创建了一个`Product`对象列表,然后将这个列表赋值给`ProductList`的`...
然后,我们遍历字节数组,使用`ToString("x2")`将每个字节转换为两位的十六进制字符串,并添加到`StringBuilder`对象中。 二、十六进制串反向转回原字符串 从十六进制串还原字符串,我们需要做相反的操作:首先将...
生成xml格式字符串、序列化XML 对象=》XML文本、反序列化 XML文本=》对象 等方法,对象和xml之间的相互转换、datatable方式转换为xml文本的工具类方法 C#语言
在C#中,将JSON字符串转换为对象的过程称为反序列化,而将对象转换为JSON字符串则称为序列化。下面将详细解释这两个过程以及如何在C#中实现它们。 **一、JSON反序列化** 反序列化是将JSON字符串转换为C#对象的过程...
例如,一个XML节点可能包含多个相同类型的子节点,这些子节点可以被反序列化为一个对象数组。此外,XML文档可能存在标签组合,表示对象间的关联关系。在这种情况下,我们需要在C#类中定义数组类型的属性,并使用`Xml...
- **定义**:XML序列化是将对象转换为XML格式的字符串或文件。 - **实现类**:`XmlSerializer`类,位于`System.Xml.Serialization`命名空间下。 - **优点**:开放性好、易于理解和处理。 - **缺点**:速度慢、...
在C# .NET编程环境中,字符串反转是一个常见的操作,它涉及到对字符串中字符顺序的逆序处理。...在学习C#的过程中,理解字符串的不可变性和各种反转技巧是非常重要的,这将有助于你编写更高效、更具可读性的代码。
在C#中,我们主要依靠`System.Text.Json`或`Newtonsoft.Json`库(也称为Json.NET)来实现字符串与JSON对象之间的转换。本篇文章将详细探讨如何使用这两种方法进行转换。 首先,让我们关注`System.Text.Json`,这是...
例如,我们可以使用以下代码将 JSON 字符串反序列化为 `RecordResult` 对象: ```csharp string jsonStr = "..."; // JSON 字符串 var result = JsonConvert.DeserializeObject(jsonStr); ``` 或者,我们可以使用...
在C#中,字符串是一个不可变的字符序列,这意味着每次对字符串进行修改都会创建一个新的字符串对象。以下是一些方法,可以用来移除字符串中的空格: 1. **使用`Replace()`方法**: `Replace()` 方法允许我们替换...
在C#编程中,序列化和反序列化是将对象的状态转换为可存储或传输的形式,然后恢复为原始对象的过程。这在数据持久化、网络通信以及跨应用程序域共享数据时非常有用。本主题将详细探讨C#中的三种序列化方式:二进制...
在C#中,字符串是由Unicode字符组成的不可变序列,通常用双引号(")包围。字符串对象是`System.String`类型的实例,它提供了一系列丰富的成员方法,如`Length`属性获取字符串长度,`IndexOf`方法查找特定字符或子串...
本篇文章将深入探讨C#中的字符串操作,包括创建、访问、修改以及常见的字符串方法。 一、字符串的创建与初始化 在C#中,有两种主要方式创建字符串: 1. 使用双引号直接赋值:`string str = "Hello, World!";` 2. ...
序列化就是将C#对象转换为JSON字符串,而解析则是将JSON字符串转换回C#对象。使用Hashtable,你可以这样做: ```csharp using System.Collections; using Newtonsoft.Json; Hashtable hashtable = new Hashtable()...
在C#编程中,字符串操作是非常常见的任务,无论是数据处理还是用户交互,都需要对字符串进行各种操作。C#提供了一种内置的`string`类型,它实际上是对.NET Framework中的`System.String`类的一个别名。这里我们将...
这个库提供了丰富的功能,包括序列化和反序列化JSON,使C#对象与JSON字符串之间能够自由转换。 1. **序列化**: 将C#对象转换为JSON字符串。例如,有一个名为`Person`的类: ```csharp public class Person { ...
在编程世界中,序列化和反序列化是两个至关重要的概念,尤其是在C#这样的面向对象的语言中。它们允许我们将对象的状态转换为数据流,以便存储或传输,然后将这些数据流还原为原来的对象形式。本篇文章将深入探讨C#中...