2013-11-19 1 views
3

Я столкнулся с сайтами «лучших практик», в которых упоминается, что вы должны распечатать свой JSON-выход из своих веб-сервисов RESTful. Я нахожу много ресурсов для того, как красиво печатать JSON в целом, но поскольку я позволяю JBoss (и RESTEasy) выводить мой JSON за обложки, я не знаю ни малейшего способа настроить его.Довольно распечатать вывод JSON в службе JBoss RESTful

Мой код выглядит примерно так:

@GET 
@Path("books") 
@Produces({ MediaType.APPLICATION_JSON }) 
public Book getBooks() { 
    return doGetBooks(); 
} 

JBoss обрабатывает запросы и строит JSON просто отлично, но его уплотняют. Я еще не нашел способ сообщить JBoss о том, чтобы напечатать его, чтобы его более читаемый в браузере в браузере и тому подобное. Я нашел некоторую документацию о том, как довольно печатать XML, поданный с JBoss, а не JSON.

Спасибо, ребята!

ответ

4

У меня есть немного раунда вокруг решения, которое печатает его довольно прилично. (Не лучший Довольно печати, но достаточно)

Вам потребуется следующее из Maven:

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-mapper-asl</artifactId> 
    <version>1.9.13</version> 
</dependency> 

Затем вы можете изменить способ что-то вроде этого:

import org.codehaus.jackson.JsonGenerationException; 
import org.codehaus.jackson.map.JsonMappingException; 
import org.codehaus.jackson.map.ObjectMapper; 
import org.codehaus.jackson.map.ObjectWriter; 

... 

private final ObjectWriter WRITER = new ObjectMapper().writerWithDefaultPrettyPrinter(); 

... 

@GET 
@Path("books") 
@Produces({ MediaType.APPLICATION_JSON }) 
public Response getBooks() { 
    return Response.status(Status.OK).entity(WRITER.writeValueAsString(doGetBooks())).build(); 
} 

С что она делает это:

  1. преобразует ваши объекты в Довольно JSON строки
  2. Возвращает объект Response с кодом ответа 200 с кодом JSON String.

Редактировать: возможно, было бы разумно сделать это доступным путем добавления параметра запроса, такого как pretty=true, так как это увеличит ваш выходной размер ответа.

Вы также можете посмотреть: http://docs.jboss.org/resteasy/2.0.0.GA/userguide/html/Built_in_JAXB_providers.html#decorators, в котором описывается создание декодера XML, который вы можете адаптировать для JSON, чтобы по-прежнему возвращать объекты и делать их за кулисами. (Я попытаюсь поиграть с этим позже)

Смежные вопросы