C#实现PHP函数serialize()与unserialize()

在日常开发当中,不同平台之间相互通信是比较常见的,比如.net和php相互通信。你可能在使用Webservice,也可能仅仅需要处理对方传递过来的一些数据。如果使用的是一些标准数据格式像XML,Json,那处理起来就比较容易了,因为各方都有类似的实现。但是这种数据格式比较非主流那该怎么办那?

 

例如你需要在.net平台处理PHP函数serialize()序列化后的字符串。又或者你想要用PHP函数 unserialize() 反序列化C#序列化的对象。那么,这个时候,Sharp Serialization Library 可以帮助你。

囧,废话好多啊,下面正文开始。

Sharp Serialization Library 介绍

Sharp Serialization Library serializes and deserializes primitives, ArrayLists and Hashtables, compatible with PHP serialize(). Use it for SOAP/Web Services communications where Hashtables cannot be passed otherwise, or saving to a file readable by php.

Sharp Serialization Library 功能

反序列化PHP函数 serialize()序列化后的字符串。
把对象序列化为PHP函数 unserialize() 可用的字符串。

Sharp Serialization Library 实例

//C#反序列化多维数组的例子
//Str是PHP函数 serialize()序列化后的字符串
//像这样a:5:{i:0;a:8:{i:0;s:1:"0";s:1:"u";s:1:"0";i:1;s:1:...
ArrayList al = (ArrayList)serializer.Deserialize(Str); 
	for (int i = 0; i < al.Count; i++)
	{
		Hashtable ht = (Hashtable)al[i]; 
		//do something
	}


//C#反序列化单维数组的例子
ArrayList al = (ArrayList)serializer.Deserialize(Str); 
	for (int i = 0; i < al.Count; i++)
	{
		Hashtable ht = (Hashtable)al[i]; 
		//do something
	}


//C#把对象序列化为PHP unserialize()可用字符串
Hashtable ht = new Hashtable();
//single string
ht[this.ssKeyTextBox.Text] = this.ssValueTextBox.Text;
ArrayList al = new ArrayList(3);
al.Add(this.alValue1TextBox.Text);
al.Add(this.alValue2TextBox.Text);
al.Add(this.alValue3TextBox.Text);
//ArrayList
ht[this.alKeyTextBox.Text] = al;
int i = Int32.Parse(this.intValueTextBox.Text);
ht[this.intKeyTextBox.Text] = i;//int
//Serialize the Hashtable
string stSerializedText = this.serializer.Serialize(ht);
this.serializeTextBox.Text = stSerializedText;

Sharp Serialization Library 下载

项目官方地址 http://csphpserial.sourceforge.net/

另附赠C#获取 Unix时间戳

//要注意转换为本地时区
DateTime dtstart = new DateTime(1970, 1, 1);
dtstart =TimeZone.CurrentTimeZone.ToLocalTime(dtstart);
TimeSpan syncDate = syncDate.Subtract(dtstart);
string unixDate = syncDate.Ticks.ToString();
unixDate = unixDate .Substring(0, unixDate.Length - 7);

 

 
posted @ 2010-09-26 12:29  向晚  阅读(3732)  评论(0编辑  收藏  举报