在做一个列子,我想将php数据存储为json格式放入memcache内,然后让java调用,php的json格式代码如下
$arr = array(
    'name' => 'testname',
    'nick' => 'testnick'
);
$json_string = json_encode($arr);
$mc->add('test', $json_string);
测试,test的key存入memcache, 在php可以正常得到
然后在java里
ApplicationContext ctx=new ClassPathXmlApplicationContext("path");  
MemCachedClient mc = (MemCachedClient)ctx.getBean("memcachedClient");
System.out.println(util.isNull(mc.get("test")));//得到为空1 请问,这个是因为什么原因呀
2 java中重cache得到php的json数据,如何转换为java数据

解决方案 »

  1.   

    又试了下,最简单的字符串
    $mc->set('1','test', 24*3600);
    java:
    System.out.println("value:"+util.getString(mc.get("1")));
    php的key:1存储成功,可以成功调用,但java从内存却取不到值,不知为什么?
      

  2.   

    找一个 java的 json 类来解析数据。php的有 json_encode,json_decondejs的也有java 的就不知道了。
      

  3.   

    嗯,现在的主要问题还不在json数据格式解析,主要问题是,php存入内存的key,value,通过java找不到。
      

  4.   

    这个可能是memcache的key的问题,检查一下 $mc->add('test', $json_string); 中的add方法,是不是有什么猫腻。。
      

  5.   

    key应该没错呀,我在memcache调试环境看了key值
    stats cachedump 1 0
    ITEM 1 [4 b; 1273081718 s]
    END
    get 1
    VALUE 1 0 4
    test
    END
      

  6.   

    java的get值不太一样噢
    get 1
    VALUE 1 32 4
    test
      

  7.   

    这个可能是memcache的key的问题,检查一下 $mc->add('test', $json_string); 中的add方法,是不是有什么猫腻。。
      

  8.   

    刚开始学php,我刚才调试了下memcached_client.php原文件的类,function _set ($cmd, $key, $val, $exp)函数,$flags = 0;-->$flags = 32;
    java类可以正常读取
      

  9.   

    我以前遇到过这个问题, 当时php设了memcache后, java得不到, 后来把memcache server升级至最新, java通过Xmemcache类来执行memcache功能的操作,  至于java 解析 json, 可以使用json simple类来实现功能
      

  10.   

    我修改了下memcached_client.php这个php类,php和java数据已经可以互访了。
      

  11.   

    在问问,这个数组该怎么加数呀
    $arr1={"test1"=>"test1","test2"=>"test2"}//10次循环
    $arr2={$i,$arr1}//怎么arr2值是最后一个呢,如果我想存储10次循环的值该怎么写?