2016-07-22 10 views
0

Slim Frameworkを使用してJSON形式の結果を返すIm既にフォーマットされたJSON - Slim Frameworkを返す

$app->get('/forecast_range/{latitude}/{longitude}/{timeStart}/{timeEnd}', function (Request $request, Response $response) { 

    $latitude = $request->getAttribute('latitude'); 
    $longitude = $request->getAttribute('longitude'); 
    $timeStart = $request->getAttribute('timeStart'); 
    $timeEnd = $request->getAttribute('timeEnd'); 

    $timeStart = new DateTime($timeStart); 
    $timeEnd = new DateTime($timeEnd); 

    $coordinates[] = array('latitude' => $latitude, 'longitude' => $longitude); 

    $forecast = new forecast_range_url($coordinates, 1, $timeStart, $timeEnd); 
    $result = $forecast->runForecast(true);  

    return $response->withJson($result); 

}); 

$result変数はすでにJSON、多次元1あります。どのように私はクライアントに$結果変数を再度エンコードせずに返すことができますか?

このコードを使用して$result keysJSONをレスポンスに追加しようとしています。私は近いうちに感じるが、まだ。構文エラーが表示されます。

$lenght = count($result);   

    for ($i=0; $i<$lenght; $i++){ 
     $response->write($result[$i]);  
    }  

    $newResponse = $response->withHeader(
     'Content-type', 
     'application/json; charset=utf-8' 
    ); 

    return $newResponse; 

答えて

0
return $response->write('{"json":"message"}') 
      ->withHeader('Content-Type', 'application/json'); 

ちょうど私が私が既にフォーマットJSONを返す可能性がどのように把握ストリームに直接書き込み、適切なコンテンツ・タイプを設定することを忘れないでください:)

+0

ああ:

これは私がして来たものです。それは私が置いた場合に働きます return $ response-> write($ result [0]) - > withHeader( 'Content-Type'、 'application/json'); 既にフォーマットされたjsonを返しますが、セット全体を返しません。 :/ –

+0

おそらく、jsonをループしてwriteメソッドのparamとして送信する必要があります。そのためには、デコードしてから再度エンコードする必要があります。:/私は正しいのですか? –

+0

はい。 ($ i = 0; $ i <$ lenght; $ i ++){ $ response-> write($ result [$ i])のためにあなたはそれをする必要があります;( – geggleto

0

。 "、"、 "[]"をresponseに追加する必要がありました。そうしないと、データは正しいJSON構文ではありません。私はそれが多次元ですJSONを言及するのを忘れてしまった

$result = $forecast->runForecast(true);   
$lenght = count($result);    

    for ($i=0; $i<$lenght; $i++){   
     if ($i == 0){ 
      $response->write('['.$result[$i].',');      
     } 
     elseif($i == $lenght - 1) 
     { 
      $response->write($result[$i].']'); 
     } 
     else 
     { 
      $response->write($result[$i].',');       
     } 
    }   

$newResponse = $response->withHeader('Content-type', 'application/json; charset=utf-8'); 
return $newResponse; 
関連する問題