2017-04-25 9 views
0

Json::decode에 문제가 있습니다. 이 코드를 사용하고 있습니다 :Json :: decode가 NULL을 반환합니다.

use Drupal\Component\Serialization\Json; 

$client = \Drupal::httpClient(); 
$request = $client->post($rest_url, [ 
     'form_params' => [ 
      'id' => $rest_id, 
     ], 
     ]); 
     $response = Json::decode($request->getBody()); 

일부 서버에서 JSON을 가져 오지만 NULL을 반환합니다.

$request->getBody() 반환 괜찮습니다 (try, catch이 ...없이) 물론 이것은 코드의 단지 일부이지만 Json::decode에 난 여전히 NULL을 얻고있다.

유일하게 알아챈 것은 우편 배달부에서 원시 본문 내용을 볼 때 JSON 시작 부분에 빈 줄이 표시된다는 것입니다 (입력시 키보드로 돌아 오는 것과 같은). 그러나 JSON이 켜져 있는지 확인했습니다. JSONLint이며 유효합니다.

어떤 아이디어일까요?

+1

'Json :: decode'는 PHP의 네이티브'json_dcode'를 호출하는 것 이상의 일을하지 않으므로'json_last_error' /'json_last_error_msg'를 사용하여 무엇이 잘못되었는지 찾으십시오. – CBroe

+0

예, 문법 오류입니다 ... 클라이언트의 고정 JSON을 요청합니다 (일부 내부 소프트웨어를 통해 생성되기 때문에) 감사합니다 ... – mixerowsky

답변

0

저는 Drupal의 JSON 시리얼 라이저에 익숙하지 않지만 문자열에 응답 본문 대화를 강요하려고합니다.

$response = Json::decode($request->getBody()->getContents()); 

Guzzle은 getBody()에서 Stream 객체를 반환하므로 문제가 될 수 있습니다.