返回已经格式化的JSON - Slim Framework

时间:2016-07-22 15:35:29

标签: php http-headers slim slim-3

我正在使用Slim Framework以JSON格式返回结果。

Class<int>

$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); }); 变量已经是JSON,是多维的。我如何才能将$ result变量返回给客户端而无需再次编码?

我尝试使用此代码将$result keysJSON附加到响应中。我觉得我很近但还没有。我收到了语法错误。

$result

2 个答案:

答案 0 :(得分:0)

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

只需将其直接写入流,并且不要忘记设置正确的内容类型:)

答案 1 :(得分:0)

我想我可以如何返回已经格式化的JSON。 我需要追加&#34;,&#34;和&#34; []&#34;到response,否则数据将不是正确的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;