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

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


person Kit Peters    schedule 17.07.2015    source источник


Ответы (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.

person juj    schedule 18.08.2015

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

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

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

Также есть утилита командной строки json_pp, которая поставляется с модулем JSON. По умолчанию это будет красивая печать. Вы можете передать ему вывод 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/

person simbabque    schedule 17.07.2015

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

$json->pretty([$enable])
person Chankey Pathak    schedule 17.07.2015
comment
Но использует ли Mojolicious::Lite JSON::PP или Mojo::JSON? - person Kit Peters; 17.07.2015
comment
Никто, кроме тебя, мог бы их использовать, верно? См. пример здесь: gist.github.com/minty/4051592 - person Chankey Pathak; 18.07.2015