用Java读取php的带字符串下标的数组

bybsky 2010-10-25
我现在有个问题,主要是Java客户端通过PHPRPC来读取PHP服务器端的数组问题。
php服务器端的代码如下:
<?php  
include ("phprpc/phprpc_server.php");  

    function helloWorld() {
        return 'hello World ';
    }


    function TestMap() {
       $map = array(
            "name" => "土豆丝",
            "price" => "15.5元"
       );
        return $map;  
    }

$server = new PHPRPC_Server();
$server->add('Hello');
$server->add('TestMap');
$server->start();
?> 


我在Java客户端的代码main方法如下:
public static void main(String[] args) {
    PHPRPC_Client client = new PHPRPC_Client("http://10.10.10.59/zdpad/sample.php");
    IHello clientProxy = (IHello)client.useService(IHello.class);
    System.out.println(clientProxy.helloWorld());
    HashMap testMap = clientProxy.testMap();
    System.out.println(testMap);

    //输出数组元素
    System.out.println("Map name = " + testMap.get("name"));
    System.out.println("Map price = " + (String)testMap.get("price"));
}


输出结果为:
hello World
{name=[B@100ab23, price=[B@e3b895}
Map name = [B@100ab23
Exception in thread "main" java.lang.ClassCastException: [B cannot be cast to java.lang.String
at test.HelloWorld.main(HelloWorld.java:61)


请问,如何才能得到 name 和 price 下标所对应的值呢?
PS:我使用 AssocArray 这个测试,但是,也没有测试出结果来。



leyteris 2011-02-21
用Cast工具类的toString方法就行:
System.out.println("Map name = " + Cast.toString(testMap.get("name")));  
System.out.println("Map price = " + Cast.toString(testMap.get("price")));

还有前面的testMap最好用AssocArray声明~~
Global site tag (gtag.js) - Google Analytics