Как включить "симпатичный" рендеринг JSON в Mojolicious::Lite?

Простой вопрос Как включить "симпатичный" рендеринг json в Mojolicious::Lite? Я разрабатываю RESTful API и хотел бы увидеть мой вывод в чуть более удобочитаемом формате.

3 ответа

Вы можете переопределить рендерер JSON по умолчанию в методе запуска.

Для минимального примера:

use JSON::XS;
our $json = JSON::XS->new->utf8->pretty;

sub startup {
  my $self = shift;
  ...
  $self->app->renderer->add_handler(json => sub {
      ${$_[2]} = $json->encode($_[3]{json});
  });
}

Обработчик по умолчанию определен в Mojolicious/Renderer.pm и использует Mojo::JSON::encode_json,

Mojo:: JSON утверждает, что является минималистичной реализацией JSON, которая полностью соответствует RFC. Он не реализует авто-отступ / делает вывод красивым.

Лучше всего использовать браузер (или другой клиент), который поддерживает это, например, SoapUI. Существуют плагины для браузера, такие как JSONView for Chrome.

Вы также можете свернуть свой собственный клиент и использовать одну из реализаций JSON, например JSON:: MaybeXS.

Тогда есть также утилита командной строки json_pp это идет с модулем JSON. По умолчанию это будет pretty-print. Вы можете передать вывод curl следующим образом:

$ curl -s -H "Accept: application/json" http://www.json-generator.com/api/json/get/ckUMuWrjLS?indent=0 -- | json_pp 

-s опция curl отключит вывод статуса.

Источник JSON выше: http://www.json-generator.com/

JSON::PP имеет pretty метод.

$json->pretty([$enable])
Другие вопросы по тегам