0

私はC#ユニティプロジェクトに取り組んでいます。PHPサーバーに保存したいオブジェクトがいくつかあります。

したがって、最初にそれらをjsonにシリアル化し、次にそれらを圧縮してサーバーにアップロードします。これにより、データベースに保存されます(バイナリとして、文字列で十分ですか?)。

今、私はそのデータを統一して取り戻したいと思います。PHPはどのように値を返す必要がありますか?そして、団結はそれをどのように受け取るべきでしょうか?

解凍とjsonへの逆シリアル化を処理します。(jsonにjsonfxを使用し、c#でネイティブに記述されたcompressメソッドを使用)この部分は正常に機能します。

各プラットフォームで同じbyte[]を受信できる必要があるだけです。

このように見えるはずです

C#-データをアップロードするには(psuedo C#)//この部分はうまく機能します

wwwform myform= new wwwform ()
byte[] mybytearr = ...
wwwform.addbinary ($mybytearr);
WWW myw=    new www (url,myform)

C#-データをフェッチする(ここでヘルプが必要)

WWW www = > new www (url,formdata)
myinput =www.text;

PHP-データをクライアントに送り返す(そしてここで助けが必要)...

$myvarbackfromthedb =.
echo $myoutput

$ myoutputがバイナリデータまたはbyte[]の場合、どうすれば同じことができますか?

ご協力いただきありがとうございます!

アップデート:

したがって、これの動機は、圧縮が返したbyte[]を保存することでした。最終的に、base64文字列に移動し、文字列としてphpに渡し、次に文字列としてデータベースに渡しました。

4

1 に答える 1

1

いくつかのバイナリデータから始めましょう:

$binary = file_get_contents('/tmp/foo');

または多分テスト目的のために:

$binary = join(array_map('chr', range(0, 127)));

どちらも任意のバイナリ文字列です。以下を使用して、それらから有効なJSON文字列を出力できます。

echo json_encode(array('foo' => $binary));

これにより、次のようなものが得られます。

{"foo":"\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-.\/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"}

これは、そのバイナリデータの有効なJSON表現です。そのデータをデコードしている人は誰でも、バイナリ値を取り戻します。ただし、たとえばBase 64エンコーディングを使用して、もう少し効率的にエンコードしたい場合があります。

echo json_encode(array('foo' => base64_encode($binary)));

これはあなたに与えるでしょう:

{"foo":"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn8="}

これで、受信者はそれを再度デコードする必要があります。PHPでは、次のようになります。

$data = json_decode($json, true);
$data['foo'] = base64_decode($data['foo']);
于 2013-02-23T11:02:18.297 に答える