2012-05-23 2 views
6

Attualmente sto utilizzando Jersey & Jackson per creare il servizio REST. In questo momento, quando un metodo Resource produce l'applicazione/json e viene restituito un POJO, serializza correttamente l'oggetto in JSON e restituisce la risposta al client.Jersey e Jackson - Modifica risorsa uscita Jackson

Quello che sto cercando di fare ora è impostare Jersey in modo che quando arriva un queryparam (diciamo "indent"), posso dire a Jackson di serializzare il JSON in un "formato più grazioso, alias indentato". Puoi facilmente dire a Jackson di farlo configurando il mapper JSON con SerializationConfig.Feature.INDENT_OUTPUT.

La domanda è: come faccio su una base per richiesta a prendere un queryparam e usarlo per modificare l'output di Jackson?

risposta

1

Qualcosa di simile a questo:

@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); 
    } 
    ... 
} 

è quello che cercavi?

+1

Il problema è ottenere l'accesso a objectMapper. – William

+0

Avendo lo stesso problema, come ottenere objectMapper? –

+1

Il mapping di oggetti è generalmente condiviso, pertanto non è necessario modificare la configurazione in base alle richieste. In http://stackoverflow.com/questions/18872931/custom-objectmapper-with-jersey-2-2-and-jackson-2-1 puoi avere un'idea di come avere un object mapper personalizzato e come ottenerne l'accesso. –