`
yfdong21
  • 浏览: 60264 次
  • 性别: 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#对象序列化为Json

    C#对象序列化成Json字符串、Json字符串反序列化为类对象

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

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

    C# Dynamic通用反序列化Json类型并遍历属性比较

    所有在反序列化Json字符串时需要一种通用的转换方式,而不是写死的某个类的反序列化,这里介绍的一种思路就是使用dynamic关键字来实现通用反序列化并比较反序列化后的对象是否深度相等即比较对象的各个字段是否相等...

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

    C#将对象序列化成JSON字符串 public string GetJsonString() { List&lt;Product&gt; products = new List(){ new Product(){Name=苹果,Price=5}, new Product(){Name=橘子,Price=5}, new Product(){Name=干柿子,Price...

    C#格式化json字符串的方法分析

    将Json字符串转化成格式化表示的方法: 字符串反序列化为对象–&gt;对象再序列化为字符串 使用Newtonsoft.Json提供的API,下载地址:http://www.newtonsoft.com/json 很多时候我们需要将json字符串以 { "status": 1, ...

    18.C#字符串和正则表达式参考手册 影印版

    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序列化反序列化,适用于与第三方系统做接口用

    C#或.net json序列化反序列化,适用于与第三方系统做接口用,实体自动转json字符串,json自动转视图

    C#使用Json.Net进行序列化和反序列化及定制化

    序列化(Serialize)是将对象转换成字节流,...一、将对象序列化为Json格式字符串 首先是正常的序列化操作,对于给定的类: private class MyClass { public int MyNum; public string MyStr; } 将该类的实例序列化

    C# 转换实体类为Json字符串

    实体类转换成 JSON 字符串,将datatable转换为json,DataTable转换实体类

    C#语法字符串与数组的研究

    如在汇编和高级语言的编译程序中,源程序和目标程序都是字符串数据。在事务处理程序中,顾客的信息如姓名、地址等及货物的名称、产地和规格等,都被作为字符串来处理。另外,字符串还具有自身的一些特性。因此,把...

    最长公共子序列算法C#实现

    采用动态规划法与回溯法实现了lcs算法,并显示各算法运行时间,便于对不同的输入数据测试这两个算法的优劣。

    c#序列化与反序列化代码

    c#网络通信的序列化 与反序列化代码,通信时遇到,传非字符串数据

    C#,字符串匹配(模式搜索)AC(Aho Corasick)算法的源代码

    一个字符串是一个定义在有限字母表∑上的字符序列。例如,ATCTAGAGA是字母表∑ = {A,C,G,T}上的一个字符串。字符串匹配问题就是在一个大的字符串T中搜索某个字符串P的所有出现位置。其中,T称为文本,P称为模式,T和...

    Json 序列化与反序列 C#脚本(.Net方法)

    Json 序列化与反序列 C#脚本 //读json ,s是json字符串,Type是要转换成的对象类型 public static object ReadJsonSerializer(string s, Type type) //写Json ,o是对象,Type是o的对象类型,返回Json字符串 ...

    C++中string转换为char*类型返回后乱码问题解决

    在写二叉树序列化与反序列化时发现序列化函数为char* Serialize1(TreeNode *root) 其函数返回类型为char*,但是我在实现的过程中为了更方便的操作添加字符串使用的是C++中string类型的变量,这就导致我最后得到的...

    ServiceStack.Text.TupleSerializer:ServiceStack.Text的扩展,以将Tuple序列化为定界字符串

    ServiceStack.Text.TupleSerializer 扩展,用于将序列化为定界字符串。 在特定情况下,这允许更多的人类可读值,同时仍然利用使用元组的好处。 自定义元组序列化当前仅适用于json序列化器。 它通过将自定义委托分配...

    最长公共子序列c#学习案例(完整版)含Excel数据分析

    分步讲解 最长公共子序列求法 1在Excel中找到规律 2规律总结到程序中 3根据规律找到长度 4找到长度的规律 5长度对应的值及对应的公共子序列 这个算法可以应用到文字录入测试的应用中,测试文字录入内容,常用的...

    最全的.net序列化操作

    最全面的序列化与反序列化。序列化为对象、XML、字符串等操作.[通用类]

    C#实现xml序列化帮助类

    C#帮助类(Helper class)是一种用于封装常用功能的类。它通常包含一组静态方法,这些方法能够...例如,一个日期帮助类可以提供各种日期计算和格式化的方法,一个字符串帮助类可以提供字符串处理和转换的方法,等等。

Global site tag (gtag.js) - Google Analytics