用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声明~~ |