2012-05-23 15 views
6

Actualmente estoy usando Jersey & Jackson para crear el servicio REST. En este momento, cuando un método Resource produce application/json y se devuelve un POJO, serializa correctamente el objeto en JSON y devuelve la respuesta al cliente.Jersey & Jackson - Recurso modificando la salida de Jackson

Lo que estoy buscando hacer ahora es configurar Jersey, así que cuando aparece un queryparam (digamos "sangrado"), puedo decirle a Jackson que serialice el JSON en un "formato más bonito, también conocido como sangrado". Puede decirle fácilmente a Jackson que haga esto configurando el asignador JSON con SerializationConfig.Feature.INDENT_OUTPUT.

La pregunta es, ¿cómo obtengo un queryparat por solicitud y lo uso para modificar la salida de Jackson?

Respuesta

1

Algo como esto:

@GET 
@Path("path/to/rest/service") 
@Produces("application/json") 
public Response getSomething(
     @DefaultValue("false") @QueryParam("indent") boolean indent, ...) { 
    ... 
    if (indent) { 
     objectMapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true); 
    } 
    ... 
} 

es lo que busca?

+1

El problema es obtener acceso a objectMapper. – William

+0

¿Tiene el mismo problema, cómo obtener ObjectMapper? –

+1

El asignador de objetos generalmente se comparte, por lo que no debe cambiar la configuración por solicitud. En http://stackoverflow.com/questions/18872931/custom-objectmapper-with-jersey-2-2-and-jackson-2-1, puede hacerse una idea de cómo tener asignador de objetos personalizado y cómo obtener acceso a él. –