0

私は配列をphpの「クライアント」からJavaの「サーバー」に渡そうとするコースワークに取り組んでいます。PHP で配列を作成し、json_encode でエンコードして、StringVariable.readLine() を使用してサーバー サイトで受け取ります。私の問題:

php 配列の値は、Java では配列の 1 つの値として受け取られます。コードと出力を見てください。

PHP - 「送信者」として

$array = array("foo", "bar", "hallo", "world");
$array2 = json_encode($array);
//var_dump($array);

$socket = fsockopen($server, $port, $eN, $eS);  

if ($socket)  
{  

fwrite($socket, $array2);

Java - 「レシーバー」として

BufferedReader in = new BufferedReader(new InputStreamReader(socket1.getInputStream())); 

 while ((in1 = in.readLine()) != null) 
                {  
                    String[] Decoder = {in1};
                    System.out.println(Arrays.asList(Decoder));

結果

[["foo","bar","ハロー","ワールド"]]

私は一般的に、LAN経由でPHPからJAVAに配列を渡すソリューションを探しています。どんな解決策も素晴らしいでしょう.. serialize()も試しましたが、受け取ったものは

[a:4:{i:0;s:3:"foo";i:1;s:3:"bar";i:2;s:5:"ハロー";i:3;s:5: "世界";}]

助けていただければ幸いです!!! ありがとう!

4

1 に答える 1

0

あなたとjson_encode同じように PHP で使用し、次に Java 側で JSON デコーダーを使用します。いくつかあります (Jackson と Gson はどちらも人気があります)。

Gsonを使用した基本的な例を次に示します。

String[] myStrings = new Gson().fromJson(in1, String[].class);

さらによいのは、Java で配列を使用するのではなく、リストを使用することです。

Type type = new TypeToken<List<String>>(){}.getType();
List<String> myStrings = new Gson().fromJson(in1, type);
于 2013-02-07T22:45:03.297 に答える