`
yfdong21
  • 浏览: 61833 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

c#将对象序列化为字符串和将字符串反序列化为对象

 
阅读更多

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#任意对象转换成字符串【VS2008源码】

    通过使用如Newtonsoft.Json库的JsonConvert类,可以将C#对象序列化为JSON字符串,这在需要跨平台或网络传输数据时非常有用。 5. **XML序列化**: - XML序列化与JSON类似,但通常用于更复杂的结构。System.Xml....

    C#对象序列化为Json

    无论是将对象序列化为JSON字符串,还是将JSON字符串反序列化为对象,都可以通过简单的API调用完成,并且支持各种自定义选项以适应不同需求。在实际开发中,正确理解和运用这些功能能够提高代码的效率和可维护性。

    C#实现实体类与字符串互相转换的方法

    本篇文章将详细介绍如何使用C#实现实体类与字符串之间的互相转换,主要涉及到了C#的反射(Reflection)技术以及对象和字符串的转换技巧。 首先,我们来看如何将实体类转换为字符串。这个过程通常涉及到遍历实体类的...

    C#实现JSON字符串序列化与反序列化的方法

    在提供的代码片段中,我们看到一个名为`GetJsonString`的方法,它使用`JavaScriptSerializer`类将`ProductList`对象序列化为JSON字符串。首先创建了一个`Product`对象列表,然后将这个列表赋值给`ProductList`的`...

    C# 字符串转十六进制串,16进制反向转回原字符串

    然后,我们遍历字节数组,使用`ToString("x2")`将每个字节转换为两位的十六进制字符串,并添加到`StringBuilder`对象中。 二、十六进制串反向转回原字符串 从十六进制串还原字符串,我们需要做相反的操作:首先将...

    C# 方式生成xml格式字符串

    生成xml格式字符串、序列化XML 对象=》XML文本、反序列化 XML文本=》对象 等方法,对象和xml之间的相互转换、datatable方式转换为xml文本的工具类方法 C#语言

    通用的josn字符串转换为对象和对象转换为字符串的c#源码

    在C#中,将JSON字符串转换为对象的过程称为反序列化,而将对象转换为JSON字符串则称为序列化。下面将详细解释这两个过程以及如何在C#中实现它们。 **一、JSON反序列化** 反序列化是将JSON字符串转换为C#对象的过程...

    C#序列化与反序列化(包括复杂xml对象)

    例如,一个XML节点可能包含多个相同类型的子节点,这些子节点可以被反序列化为一个对象数组。此外,XML文档可能存在标签组合,表示对象间的关联关系。在这种情况下,我们需要在C#类中定义数组类型的属性,并使用`Xml...

    C#对象序列化与反序列化

    - **定义**:XML序列化是将对象转换为XML格式的字符串或文件。 - **实现类**:`XmlSerializer`类,位于`System.Xml.Serialization`命名空间下。 - **优点**:开放性好、易于理解和处理。 - **缺点**:速度慢、...

    字符串反转 C# .NET

    在C# .NET编程环境中,字符串反转是一个常见的操作,它涉及到对字符串中字符顺序的逆序处理。...在学习C#的过程中,理解字符串的不可变性和各种反转技巧是非常重要的,这将有助于你编写更高效、更具可读性的代码。

    C#字符串和JSON数据类型相互转换

    在C#中,我们主要依靠`System.Text.Json`或`Newtonsoft.Json`库(也称为Json.NET)来实现字符串与JSON对象之间的转换。本篇文章将详细探讨如何使用这两种方法进行转换。 首先,让我们关注`System.Text.Json`,这是...

    c#json序列化与反序列化.doc

    例如,我们可以使用以下代码将 JSON 字符串反序列化为 `RecordResult` 对象: ```csharp string jsonStr = "..."; // JSON 字符串 var result = JsonConvert.DeserializeObject(jsonStr); ``` 或者,我们可以使用...

    c#去掉字符串中所以的空格

    在C#中,字符串是一个不可变的字符序列,这意味着每次对字符串进行修改都会创建一个新的字符串对象。以下是一些方法,可以用来移除字符串中的空格: 1. **使用`Replace()`方法**: `Replace()` 方法允许我们替换...

    C#对象三种形式的序列化和反序列化

    在C#编程中,序列化和反序列化是将对象的状态转换为可存储或传输的形式,然后恢复为原始对象的过程。这在数据持久化、网络通信以及跨应用程序域共享数据时非常有用。本主题将详细探讨C#中的三种序列化方式:二进制...

    c# 在字符串里处理重复字符

    在C#中,字符串是由Unicode字符组成的不可变序列,通常用双引号(")包围。字符串对象是`System.String`类型的实例,它提供了一系列丰富的成员方法,如`Length`属性获取字符串长度,`IndexOf`方法查找特定字符或子串...

    C#字符串操作

    本篇文章将深入探讨C#中的字符串操作,包括创建、访问、修改以及常见的字符串方法。 一、字符串的创建与初始化 在C#中,有两种主要方式创建字符串: 1. 使用双引号直接赋值:`string str = "Hello, World!";` 2. ...

    c#两种简单的json类和对象的序列化和解析

    序列化就是将C#对象转换为JSON字符串,而解析则是将JSON字符串转换回C#对象。使用Hashtable,你可以这样做: ```csharp using System.Collections; using Newtonsoft.Json; Hashtable hashtable = new Hashtable()...

    C#字符串总结

    在C#编程中,字符串操作是非常常见的任务,无论是数据处理还是用户交互,都需要对字符串进行各种操作。C#提供了一种内置的`string`类型,它实际上是对.NET Framework中的`System.String`类的一个别名。这里我们将...

    C#解析Json字符串.zip

    这个库提供了丰富的功能,包括序列化和反序列化JSON,使C#对象与JSON字符串之间能够自由转换。 1. **序列化**: 将C#对象转换为JSON字符串。例如,有一个名为`Person`的类: ```csharp public class Person { ...

    C# 各种序列化和反序列化

    在编程世界中,序列化和反序列化是两个至关重要的概念,尤其是在C#这样的面向对象的语言中。它们允许我们将对象的状态转换为数据流,以便存储或传输,然后将这些数据流还原为原来的对象形式。本篇文章将深入探讨C#中...

Global site tag (gtag.js) - Google Analytics