Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数组php转换为java_Java_Php_Arrays_Multidimensional Array - Fatal编程技术网

将数组php转换为java

将数组php转换为java,java,php,arrays,multidimensional-array,Java,Php,Arrays,Multidimensional Array,我正在开发一个包含java文件和php文件的应用程序。java文件调用php文件,这些文件在ddbb中执行查询,并以数组php的形式返回结果,但在屏幕上打印。在java中,我把它当作字符串,我必须将它转换为and数组或集合,但我不知道怎么做 php打印的结果示例如下: Array ( [0] => Array ( [id] => 1 [0] => 1 [name] => pepe [1] =>

我正在开发一个包含java文件和php文件的应用程序。java文件调用php文件,这些文件在ddbb中执行查询,并以数组php的形式返回结果,但在屏幕上打印。在java中,我把它当作字符串,我必须将它转换为and数组或集合,但我不知道怎么做

php打印的结果示例如下:

Array
(
[0] => Array
    (
        [id] => 1
        [0] => 1
        [name] => pepe
        [1] => pepe
    )

[1] => Array
    (
        [id] => 2
        [0] => 2
        [name] => antoñito
        [1] => antoñito
    )

[2] => Array
    (
        [id] => 3
        [0] => 3
        [name] => loló
        [1] => loló
    )

[3] => Array
    (
        [id] => 4
        [0] => 4
        [name] => ñoño
        [1] => ñoño
    )

[4] => Array
    (
        [id] => 5
        [0] => 5
        [name] => Antoñito
        [1] => Antoñito
    )

[5] => Array
    (
        [id] => 7
        [0] => 7
        [name] => José
        [1] => José
    )

)
如果我使用json_encode(_数组),结果如下:

[{"id":"1","0":"1","name":"pepe","1":"pepe"},    {"id":"2","0":"2","name":"anto\u00f1ito","1":"anto\u00f1ito"},{"id":"3","0":"3","name":"lol\u00f3","1":"lol\u00f3"},{"id":"4","0":"4","name":"\u00f1o\u00f1o","1":"\u00f1o\u00f1o"},{"id":"5","0":"5","name":"Anto\u00f1ito","1":"Anto\u00f1ito"},{"id":"7","0":"7","name":"Jos\u00e9","1":"Jos\u00e9"}]

谢谢大家

我认为这很有用

使用一些更标准的传输格式,比如JSON。PHP端必须使用
json\u encode()
对数组进行编码,Java端需要一些库对其进行解码(请参见相关内容)。

您应该为数据选择序列化方法。例如,XML或JSON

我个人建议您使用JSON,因为它是轻量级的,甚至对人类来说也很容易阅读,而且两种语言都有多种库可供选择

PHP端的编码 使用Jackson在Java端解码
final ObjectMapper ObjectMapper=new ObjectMapper();
//更好的方法是使用正确的格式创建自定义类
解码的最终映射=objectMapper.readValue(编码的,Map.class);

使用xml或json等交换格式。最好考虑一下您的设计。将数组作为字符串从PHP传递到Java。从Java调用PHP进行数据库访问?所有这些对我来说都很可怕。我试过了,但是当我使用json_enconde时,我丢失了每个奇怪的字符。utf8似乎不适用于that@user1274103这当然有效。JSON序列化会转义非ASCII字符,因此解码时原始字符会返回。我在应用JSON时用结果更新了问题_encode@user1274103是的,正如您所看到的,特殊字符被编码为使用ASCII字符转义序列。这确保了JSON可以通过多种渠道(SMTP、HTTP)轻松安全地传输。当你试图用任何工具解码它时,转义序列就会变成它们以前的UTF-8值(ñ,ó,é)。只要试着用PHP使用
json\u decode()
对其进行解码即可。
$encoded = json_encode($data);
final ObjectMapper objectMapper = new ObjectMapper();
// the better way is to create a custom class with the correct format
final Map<?, ?> decoded = objectMapper.readValue(encoded, Map.class);