2014-11-28 5 views
0

Hiii,byte [] to string conversion

Я использую Gearman для обработки связи между PHP и java. Я пытаюсь передать массив из PHP, используя json_encode для java-работника. На PHP стороне:

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, как показано на рисунке, как "" {\ "к \": \ "абхи \", \ "message \": \ "this test \"} "". Может кто-то помочь.

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

+0

И что не так с этими данными? – Jens

+0

См. Текст выделения в отладчике ... Я обновил текст. –

+0

Почему вы используете 'String.valueOf (json)'? json уже строка! Как выглядит 'jsonObject'? – Jens

ответ

0

НШ, я получил ответ, я отправлял массив после использования 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); 
}