Laravel 4 JSON 输出格式

Posted

技术标签:

【中文标题】Laravel 4 JSON 输出格式【英文标题】:Laravel 4 JSON Output formatting 【发布时间】:2014-01-07 20:19:01 【问题描述】:
return Response::json(array(
    'status' => 200,
    'posts' => $post->toArray()
), 200);

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

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

更新

实际上我修改了Illumination的响应类以具有该常量。

【问题讨论】:

这里有解决方案:***.com/questions/6054033/… 【参考方案1】:

在 Laravel 5.2 中,您可以使用类似的方法来使用帮助器

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

【讨论】:

【参考方案2】:

在当前的 4.2 版本中是可能的。

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

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

我认为 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);

【讨论】:

为什么要先响应,然后再解码和编码? @XoneFobic 的变体更好。 @Reflic: 绝对需要 moar 咖啡。更新了帖子,谢谢:)【参考方案5】:

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

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

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

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

未经测试,如果可以使用 Response::json(),您可以查看 Laravel api。

【讨论】:

以上是关于Laravel 4 JSON 输出格式的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent 模型 JSON 输出格式

如何将Laravel输出的日期格式更改为JSON?

如何将 Laravel 输出的日期格式更改为 JSON?

laravel框架(blade模板引擎)

有关 JSON、cURL 和 laravel 的参考文档

我想自学laraver,请诸位前辈给一些建议,谢谢