C#实现PHP函数serialize()与unserialize()
时间:2010-09-26 来源:向晚
在日常开发当中,不同平台之间相互通信是比较常见的,比如.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 实例
//来自 http://endless.im //原文 http://endless.im/archives/csharp-sharpserializationlibrary-php-serialize.html //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);
此文同时发布在:http://endless.im
原文地址:http://endless.im/archives/csharp-sharpserializationlibrary-php-serialize.html