2017-04-25 19 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を返します。もちろん、これ(... tryなし、catch)コードのほんの一部です

$request->getBody()リターンはOKですが、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オブジェクトを返します。問題がある可能性があります。

関連する問題