Is there any way to configure JsonResponse output to be - for example - unescaped unicode?
something like the output of this php function:
json_encode($array, JSON_UNESCAPED_UNICODE);
Yes, here you go:
$response = new JsonResponse($data);
$response->setEncodingOptions(JSON_UNESCAPED_UNICODE);
return $response;
To do this globally, make an event listener. Something like this:
services.yml:
event_listeners.json_formatter_listener:
class: EventListeners\JsonResponseFormatterListener
tags:
- { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }
JsonResponseFormatterListener.php:
<?php
namespace EventListeners;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
class JsonResponseFormatterListener
{
public function onKernelResponse(FilterResponseEvent $event)
{
$response = $event->getResponse();
if ($response instanceof JsonResponse) {
$response->setEncodingOptions(JSON_UNESCAPED_UNICODE);
}
}
}