byte []到字符串转换

时间:2014-11-28 07:09:51

标签: java php gearman

HIII,

我正在使用Gearman来处理PHP和java之间的通信。我正在尝试使用json_encode从PHP发送数组到java worker。 在php Side:

public function test()
{
    $test = $this->serviceManager->get('test\Model\test');
    //print_r($test);exit;
    $message = array(
        'to'        =>  'abhi',
        'message'   =>  'this is a test',
    );
    $test->sendtoJavaWorker(json_encode($message));
}

在java方面:

@Override
public byte[] work(String function, byte[] data, GearmanFunctionCallback callback) throws Exception {

    String json = new String(data, "UTF-8");

    JSONObject jsonObject = new JSONObject(String.valueOf(json)); 

    String to = (String) jsonObject.get("to");

    return data;
}

现在我得到的json值如图所示"" {\"到\":\" abhi \",\&# 34;消息\":\"这是一个测试\"}""。有人可以帮忙。

enter image description here

暂时,我通过使用此代码修复此问题

String json = new String(data);
    json = json.toString().replace("\\", "");
    StringBuilder sb = new StringBuilder(json);
    sb.deleteCharAt(0);
    sb.deleteCharAt(sb.length()-1);
    json = sb.toString();

    System.out.println(json);

然后我得到的答案如下:

enter image description here

1 个答案:

答案 0 :(得分:0)

HIII,      我得到了答案,我在使用json_encode到gearman之后发送数组,结果直接发送到它工作。

public function test()
{
    $test = $this->serviceManager->get('test\Model\test');
    //print_r($test);exit;
    $message = array(
        'to'        =>  'abhi',
        'message'   =>  'this is a test',
    );
    $test->sendtoJavaWorker($message);
}