DOBON.NETプログラミング道掲示板

■34529 / 親記事)  PHPでシリアライズした、データをデシリアライズしたい
  
□投稿者/ シルビア大好き 一般人(1回)-(2020/09/14(Mon) 17:01:14)
  • アイコン環境/言語:[VB.net .NET Framework 3.5] 
    分類:[.NET] 

    PHPでシリアライズしたデータを
    .netにてデシリアライズしたいのですが、
    参考になるようなページが見つからないです。

    jsonフォーマットではありません。
    a:1:{s1:10:"2020-10-01";
    のフォーマットとなります。

    データはテキスト形式ですが、それをデシリアライズしたいと考えております。
マルチポストを報告
違反を報告
引用返信 削除キー/
■34530 / ResNo.1)  Re[1]: PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ 魔界の仮面弁士 大御所(1295回)-(2020/09/15(Tue) 11:50:44)
  • アイコンNo34529に返信(シルビア大好きさんの記事)
    > a:1:{s1:10:"2020-10-01";
    > のフォーマットとなります。

    a:1 という事から、要素数 1 の配列のように見受けられますが、
    提示されたフォーマットだと、unserialize できないのではありませんか?

    PHP は触ったことが無いので良く知らないのですが、
     serialize( array( '2020-10-01' ) );
    とも違うようですし。


    『a:1:{s1:10:"2020-10-01";』ではなく、
    『a:1:{i:0;s:10:"2020-10-01";}』とかで良ければ、こんなのとか。

    /// <seealso cref="https://gist.github.com/xiangwan/1225981/1f6d12679fe510ff241468561e0f80fa757f8db4"/>
    static void Main()
    {
     var text = "a:1:{i:0;s:10:\"2020-10-01\";}";
     dynamic contents = new Serializer().Deserialize(text);
    }
違反を報告
引用返信 削除キー/
■34531 / ResNo.2)  Re[2]: PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ 魔界の仮面弁士 大御所(1296回)-(2020/09/15(Tue) 11:55:12)
  • アイコンNo34530に追記(魔界の仮面弁士の記事)
    > /// <seealso cref="https://gist.github.com/xiangwan/1225981/1f6d12679fe510ff241468561e0f80fa757f8db4"/>

    おっと、VB でしたか。

    上記の C# クラスを VB に翻訳して使うか、
    C# で DLL を作って、それを VB から参照設定してみてください。
違反を報告
引用返信 削除キー/
■34532 / ResNo.3)  Re[3]: PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ 魔界の仮面弁士 大御所(1297回)-(2020/09/15(Tue) 13:26:19)
  • アイコンNo34531に返信(魔界の仮面弁士さんの記事)
    >>> a:1:{s1:10:"2020-10-01";
    > 上記の C# クラスを VB に翻訳して使うか、
    > C# で DLL を作って、それを VB から参照設定してみてください。

    別案。検索してみたらこんなのを見つけました。
    http://vbcity.com/forums/t/166368.aspx


    8/16/2012 7:06 AM の発言で紹介されている
    PHPSerializationLibrary.dll を参照設定に加えて、こんな感じです。

    PHP 本家の実装ほどには、厳密に検査していないようですので、
    最初の質問にあったフォーマットであっても、
    エラー無くデシリアライズされてしまうようです。

    Dim php As New Conversive.PHPSerializationLibrary.Serializer()
    Dim contents1 = php.Deserialize("a:1:{i:0;s:10:""2020-10-01"";}")
    Dim contents2 = php.Deserialize("a:1:{s1:10:""2020-10-01"";")
    Dim contents3 = php.Deserialize("a:1:{s:10:""2020-10-01"";")
    Dim contents4 = php.Deserialize("a:1:{s:10:""2020-10-01"";}")


    なお、上記の結果は下記と同様です。

    Dim contents1 As Object = New ArrayList() From {"2020-10-01"}
    Dim contents2 As Object = New Hashtable() From {{"2020-10-01", ""}}
    Dim contents3 As Object = New Hashtable() From {{"2020-10-01", New Object()}}
    Dim contents4 As Object = New Hashtable() From {{"2020-10-01", New Object()}}
違反を報告
引用返信 削除キー/
■34535 / ResNo.4)  Re[4]: PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ シルビア大好き 一般人(3回)-(2020/09/16(Wed) 14:49:33)
  • アイコン> 魔界の仮面弁士さん
    回答いただき、ありがとうございます。
    最初にいただいた、回答に記載のURLにある
    C#のコードを.netに合わせて作ってみたところ、
    ハッシュテーブルとして、変数に設定することが出来ました。

    あとは、データをどのように扱うべきか検討する必要がありますが、
    そこから先は、自身で考えるべき内容なので、頑張ります。

    大変助かりました。
    ありがとうございます。
解決み!
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -