C#実装PHP関数serialize()とunserialize()

3039 ワード

日常開発では,.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/
Unixタイムスタンプの取得にC#を添付
//          

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に同時に発行されます.