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

ツリー一括表示

Nomalアイコン PHPでシリアライズした、データをデシリアライズしたい /シルビア大好き (20/09/14(Mon) 17:01) #34529
Nomalアイコン Re[1]: PHPでシリアライズした、データをデシリアライズしたい /魔界の仮面弁士 (20/09/15(Tue) 11:50) #34530
  └Nomalアイコン Re[2]: PHPでシリアライズした、データをデシリアライズしたい /魔界の仮面弁士 (20/09/15(Tue) 11:55) #34531
    └Nomalアイコン Re[3]: PHPでシリアライズした、データをデシリアライズしたい /魔界の仮面弁士 (20/09/15(Tue) 13:26) #34532
      └Nomalアイコン Re[4]: PHPでシリアライズした、データをデシリアライズしたい /シルビア大好き (20/09/16(Wed) 14:49) #34535 解決み!


親記事 / ▼[ 34530 ]
■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";
    のフォーマットとなります。

    データはテキスト形式ですが、それをデシリアライズしたいと考えております。
違反を報告
[ □ Tree ] 返信 削除キー/

▲[ 34529 ] / ▼[ 34531 ]
■34530 / 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);
    }
違反を報告
[ 親 34529 / □ Tree ] 返信 削除キー/

▲[ 34530 ] / ▼[ 34532 ]
■34531 / 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 から参照設定してみてください。
違反を報告
[ 親 34529 / □ Tree ] 返信 削除キー/

▲[ 34531 ] / ▼[ 34535 ]
■34532 / 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()}}
違反を報告
[ 親 34529 / □ Tree ] 返信 削除キー/

▲[ 34532 ] / 返信無し
■34535 / 4階層)  Re[4]: PHPでシリアライズした、データをデシリアライズしたい
□投稿者/ シルビア大好き 一般人(3回)-(2020/09/16(Wed) 14:49:33)
  • アイコン> 魔界の仮面弁士さん
    回答いただき、ありがとうございます。
    最初にいただいた、回答に記載のURLにある
    C#のコードを.netに合わせて作ってみたところ、
    ハッシュテーブルとして、変数に設定することが出来ました。

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

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


Mode/  Pass/


- Child Tree -