文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>序列化对象为字符串,然后再把字符串反序列化为字符串

序列化对象为字符串,然后再把字符串反序列化为字符串

时间:2010-09-01  来源:YnioBa

今天和群里的朋友讨论到一个问题,就是如何把一个对象的N多个属性如何在页面之间传递。我当时的想法是通过序列化保存成文件,另外一个页面读取这个文件,再反序列化出来。。。后来想到,是不是可以把对象序列化为字符串咧,直接用URL来传递。反正序列化出来的东西都是byte的数组。只要把这个数组转成字符串就好了。

 

把byte转为字符串,以前看过一篇文章,说是用asciiencode。后来想起,前段时间做邮件客户端,里面的附件都是先转成base64的。这个base64是在网络上传输字节的编码方式。应该也能用。。最后调试好的代码如下:

 

 

代码
 1     public partial class Form1 : Form
2 {
3 public Form1()
4 {
5 InitializeComponent();
6 }
7
8 private void button1_Click(object sender, EventArgs e)
9 {
10
11
12 //var tarObj = new { name="小明",age=12 };
13 var tarObj =new tarobj();
14 tarObj.name="小明";
15 tarObj.age = 10;
16
17 BinaryFormatter bf = new BinaryFormatter();
18 MemoryStream ms = new MemoryStream();
19 bf.Serialize(ms, tarObj);
20 byte[] objByte = ms.ToArray();
21
22
23 //MessageBox.Show(Convert.ToBase64String(objByte,0,objByte.Length));
24 richTextBox1.Text = Convert.ToBase64String(objByte, 0, objByte.Length);
25 ms.Close();
26
27
28 }
29
30 private void button2_Click(object sender, EventArgs e)
31 {
32 byte[] objByte = Convert.FromBase64String(richTextBox1.Text.Trim());
33 BinaryFormatter bf = new BinaryFormatter();
34 MemoryStream ms = new MemoryStream(objByte,0,objByte.Length);
35 //ms.Read(objByte, 0, objByte.Length);
36
37 var finalObj = bf.Deserialize(ms) as tarobj;
38 ms.Close();
39
40 }
41 }
42
43 [Serializable]
44 public class tarobj
45 {
46 public string name { get; set; }
47 public int age { get; set; }
48 }

 

写代码的时候,我碰到一个问题,一直没解决。。就是匿名类是否只能序列化为json??一个普通的匿名类是否能序列化呢?

匿名类序列化为json的时候,多层的json无法通过URL来传递,例如类里面有个泛型的数组一类的,就无法通过URL来传递,我以前就碰到过。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载