我们一直在寻找一种在项目中尽可能轻松地完成复杂工作的方法, 这意味着不断地编程和调试基本内容是我们网站的简单回应。如果你使用自己的API或控制器中返回JSON字符串作为响应的基本响应, 则可能会知道使用Symfony 4的JsonResponse类的响应会返回字符串的精简版本, 就像json_encode方法默认情况下会执行此操作, 例如:
<
?php// src/Controller/PagesController.phpnamespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
class PagesController extends AbstractController{/*** @Route("/", name="app_index")*/public function index(){return new JsonResponse(['name' =>
"Carlos", 'age' =>
22, 'location' =>
['city' =>
'Bucaramanga', 'state' =>
'Santander', 'country' =>
'Colombia']]);
}}
【如何在Symfony 4中漂亮地打印JsonResponse】这将在浏览器中返回以下字符串作为响应:
{"name":"Carlos", "age":22, "location":{"city":"Bucaramanga", "state":"Santander", "country":"Colombia"}}
如你所见, 即使是单个对象也很难阅读, 因此, 请想象一个巨大的对象将是什么样子!当然, 你可以使用控制器中的dump方法事先调试要返回的对象, 但是, 如果要通过旧的方法进行调试, 最好发送响应的漂亮打印版本以查看它在浏览器中。这很容易做到, 我将在短期内向你解释如何做。
漂亮的打印响应修改响应JsonResponse类具有setEncodingOptions方法, 该方法设置将数据编码为JSON时使用的选项。默认情况下, 该类使用以下选项来编码JSON响应(使用json_encode方法):
// Encode <
, >
, ', &
, and " characters in the JSON, making it also safe to be embedded into HTML.// 15 === JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOTconst DEFAULT_ENCODING_OPTIONS = 15;
然后, 你可以在响应中连接新的JSON_PRETTY_PRINT选项, 如下所示:
$response = new JsonResponse([ // data ]);
$response->
setEncodingOptions( $response->
getEncodingOptions() | JSON_PRETTY_PRINT );
return $response;
以下示例显示了如何在控制器中执行此操作:
<
?php// src/Controller/PagesController.phpnamespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
class PagesController extends AbstractController{/*** @Route("/", name="app_index")*/public function index(){$response = new JsonResponse(['name' =>
"Carlos", 'age' =>
22, 'location' =>
['city' =>
'Bucaramanga', 'state' =>
'Santander', 'country' =>
'Colombia']]);
// Use the JSON_PRETTY_PRINT $response->
setEncodingOptions( $response->
getEncodingOptions() | JSON_PRETTY_PRINT );
return $response;
}}
并且它将在浏览器中返回以下字符串作为响应:
{"name": "Carlos", "age": 22, "location": {"city": "Bucaramanga", "state": "Santander", "country": "Colombia"}}
编码愉快!
推荐阅读
- 这是什么物联网()
- 简单的C语言printf函数输出
- 无线网络技术专题企业WLAN网络典型组网架构分析
- springboot整合activiti,activiti在线编辑器,敏捷快速带源码
- web前端性能优化——图片加载的优化
- Java ASM系列((059)opcode: stack)
- Windows 巡检脚本
- 面试中的老大难-mysql事务和锁,一次性讲清楚!
- 实践400+私有云打造的云安全高可用架构详解