将Java字符串转换为数组

4
这是一个奇怪的问题。以下是我的代码。
 String reply = listen.executeUrl("http://localhost:8080/JavaBridge/reply.php); 

执行executeUrl方法会返回reply.php文件返回的字符串对象。现在出现了问题,因为reply.php中返回的是PHP数组,而回复却是字符串类型。
当我执行
System.out.println("Reply = "+reply);  

I get

Reply =       array(2) {  [0]=>  string(14) "Dushyant Arora"  [1]=>  string(19
) "@dushyantarora13 hi"}

但是回复仍然是一个字符串。我如何将它转换为字符串数组或者数组。

4个回答

8
你可以尝试在reply.php中返回一个JSON对象,然后使用JSON库将其导入到Java中。 http://www.json.org/java/ reply.php:
<?
...
echo json_encode($yourArray);

在您的Java代码中:
...
JSONArray reply = new JSONArray(listen.executeUrl("http://localhost:8080/JavaBridge/reply.php"));

+1 for JSON!这是两种语言的库都支持的标准格式! - polygenelubricants

2
这完全没有什么奇怪的地方。你已经声明了一个名为String reply 的字符串变量,因此它当然是一个字符串。将一个字符串分割成一个String[]数组的标准方法是使用String.split,但我认真考虑过改变回复字符串的格式,而不是尝试弄清楚当前格式的正则表达式,因为它并不是很友好。

1
解析PHP数组并不是最好的解决方案,但我无法抗拒一个好的正则表达式问题。
public static void main(String[] args) {
    Pattern p = Pattern.compile("\\[\\d+\\]=>  string\\(\\d+\\) \"([^\"]*)\"");
    String input = "      array(2) {  [0]=>  string(14) \"Dushyant Arora\"  [1]=>  string(19" +
            ") \"@dushyantarora13 hi\"}";
    ArrayList<String> list = new ArrayList<String>();
    Matcher m = p.matcher(input);
    while (m.find()) {
        list.add(m.group(1));
    }
    System.out.println(list);
}

[Dushyant Arora,@dushyantarora13 你好]


1

你可能想要更改reply.php的行为,返回一个字符串而不是一个数组。

也许可以尝试以下代码:

// ...
return implode(" ", $your_reply_array) ;

我需要在Java端创建一个数组。我该怎么做? - Bruce
忘掉那个吧,就像thetaiko所说的,你需要的是JSON :) - Romain Deveaud

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接