0

我正在做一个课程,我试图将一个数组从 php 'client' 传递给 java 'server'。我在 php 中创建了一个数组,使用 json_encode 对其进行编码,并使用 StringVariable.readLine() 在服务器站点上接收它。我的问题:

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

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","你好","world"]]

我通常在寻找一种解决方案,通过我的局域网将数组从 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 解码器;有几个(杰克逊和格森都是流行的)。

这是一个使用Gson的基本示例:

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

更好的是不要在 Java 中使用数组,而是使用 List:

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