zoukankan      html  css  js  c++  java
  • 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 实例

    //来自 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

  • 相关阅读:
    json转成csv文件
    从输入url到页面展示到底发生了什么
    详解定时任务中的 cron 表达式
    创建型模式之简单工厂模式
    MySQL数据分组GROUP BY 和HAVING
    贪心算法
    JavaScript与DOM(下)
    JavaScript与DOM(上)
    Hibernate 的一级缓存和二级缓存总结
    JVM 发生OOM的四种情况
  • 原文地址:https://www.cnblogs.com/wuya/p/1835410.html
Copyright © 2011-2022 走看看