2013-02-07 37 views
0

我正在研究一個課程,我嘗試將一個數組從php'client'傳遞給java'server'。我在php中創建一個數組,使用json_encode對其進行編碼,然後使用StringVariable.readLine()在服務器站點上接收它。 我的問題:通過網絡將json_encode數組傳遞給java

php數組的值被作爲java中數組的一個值接收。請看看代碼和輸出。

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); 

爪哇 - 如 '接收器'

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

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

結果

[[ 「foo」 的, 「酒吧」 ,「hallo」,「world」]]

我總是尋找一種解決方案,我通過我的局域網將數組從PHP傳遞到JAVA。任何解決方案將是偉大的..我也試過serialize()和我收到的是

[a:4:{i:0; s:3:「foo」; i:1; s:3 :「bar」; i:2; s:5:「hallo」; i:3; s:5:「world」;}]

幫助會大大提高!謝謝!

+2

提示:在接收端增加一個JSON解碼器。到目前爲止,你把它當作一個字符串對待。不知道爲什麼你將它包裝在一個元素數組中。 –

+0

更簡單的方法:在PHP端的implode(),在Java端的String.split()。也就是說,只有當你知道一個可以可靠地用作分隔符的角色! –

回答

0

您可以像在PHP中一樣使用json_encode,然後在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);