Laravel 4 JSON输出格式

时间:2013-12-19 10:10:44

标签: php json laravel

return Response::json(array(
    'status' => 200,
    'posts' => $post->toArray()
), 200);

使用上面的代码我以json格式返回数据 我已经看到了其他的api,它返回json以格式化的视图返回它 喜欢:

http://api.steampowered.com/ISteamNews/GetNewsForApp/v0002/?appid=440&count=3&maxlength=300&format=json

但我的回归是一行。如何使用laravel以格式化方式生成json?


更新

直到明天我才能测试代码。所以我会接受答案汤姆。

但这是api

http://laravel.com/api/class-Illuminate.Support.Facades.Response.html

和参数是,

$data
$status
$headers

更新

实际上我修改了照明的响应类以使其保持不变。

5 个答案:

答案 0 :(得分:17)

目前的4.2版本是可能的。

Response::json($data=[], $status=200, $headers=[], $options=JSON_PRETTY_PRINT);

https://github.com/laravel/framework/commit/417f539803ce96eeab7b420d8b03f04959a603e9

答案 1 :(得分:7)

我不认为Laravel允许您格式化JSON输出。但是,您可以使用json_encode()JSON_PRETTY_PRINT常量(自PHP 5.4.0起可用)来执行此操作。方法如下:

$array = array(
    'status' => 200,
    'posts' => $post->toArray()
);

return json_encode($array, JSON_PRETTY_PRINT);

答案 2 :(得分:4)

相同的答案,但使用json内容类型(如问题中的示例):

return Response::make(json_encode(array(
    'status' => 200,
    'posts' => $post->toArray()
), JSON_PRETTY_PRINT))->header('Content-Type', "application/json");

答案 3 :(得分:1)

这是(据我所知)服务器端设置。 就像xDebug会像那样格式化它(也给它着色)。

默认情况下,JSON是单个字符串。并且与Laravel或任何其他框架无关。

如果您使用的是PHP 5.4+,则可以使用JSON_PRETTY_PRINT

return json_encode(array(
    'status' => 200,
    'posts' => $post->toArray()
), JSON_PRETTY_PRINT);

未经测试,你可以查看Laravel api是否可以使用Response :: json()。

答案 4 :(得分:1)

在Laravel 5.2中,你可以使用类似的方法使用助手

return response()->json($data=[], $status=200, $headers=[], $options=JSON_PRETTY_PRINT)