通过网络将json_encode数组传递给java

时间:2013-02-07 22:29:56

标签: java php arrays networking serialization

我正在做一个课程,我试图将一个数组从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” 的 “条”, “喂”, “世界”]]

我常常寻找一种解决方案,我通过我的局域网将数组从PHP传递到JAVA。任何解决方案都会很棒..我也试过序列化(),我收到的是

[一个:4:{I:0; S:3: “foo” 的; I:1; S:3: “栏”; I:2; S:5: “喂”; I:3; S :5: “世界”;}]

帮助将非常赞赏!谢谢!

1 个答案:

答案 0 :(得分:0)

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