質問するログイン新規登録

Q&A

0回答

2513閲覧

MessagePack-CSharpでシリアライズして出力したファイルをphp側のMessagePackでデシリアライズして利用したい。

SHINMATSU

総合スコア17

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MessagePack

MessagePackはシリアライズライブラリです。 オブジェクトをバイト列に変換したり、バイト列からオブジェクトを復元出来ます。

0グッド

2クリップ

投稿2018/11/06 16:59

編集2018/11/06 17:02

0

2

現在MessagePack-CSharpを利用してバイナリを取り扱おうとしています。

利用しているソースは下記です。
https://github.com/neuecc/MessagePack-CSharp
MessagePack-CSharp-1.7.3
VisualStudioでC#でコンソールアプリ作成として利用

やりたいこととしては下記です。
今Excelを読み込んで、MessagePack-CSharp-1.7.3でシリアライズしてファイル生成を行なっています。

例> var bytes = MessagePackSerializer.Serialize(mc);

そのファイルをUnityとphpサーバーで利用しようと考えております。

その際にUnity側ではMessagePack.Unity.1.7.3を利用して下記のような感じで専用のクラスを受け口としてデシリアライズは可能です。

例> var mc2 = MessagePackSerializer.Deserialize<MyClass>(bytes);

質問
php側で同じようにでデシリアライズをかけるにはどのようにしたらよろしいでしょうか?

やはりC#側でDictionary<string, Object>のような感じにしてphpではarrayで受け取るような感じなのでしょうか?

いろいろ試していた結果Dictionaryでシリアライズを行うと、専用のデータクラスを用意してシリアライズするのに比べデータサイズがかなり大きくなりました。その為、できるだけ専用のデータクラスを用意してMessagePack-CSharシリアライズ → phpでシリアライズを行いたいと考えております。

ちなみにphpでは下記を検討しております。
rybakit/msgpack または PECL messagepack

何か良い方法がございましたらご教授いただければと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問