在日常开发当中,不同平台之间相互通信是比较常见的,比如.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;
//do something
}
//C#反序列化单维数组的例子
ArrayList al = (ArrayList)serializer.Deserialize(Str);
for (int i = 0; i < al.Count; i++)
{
Hashtable ht = (Hashtable)al;
//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
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com