2016-04-15 25 views
5

Recentemente sono passato alla maglia 2,. sono andato attraverso la documentazione/web e avuto modo di sapere come convertire classe risposta alla classe personalizzata utilizzando .readEntity(ClassName.class);Jersey JSON passaggio da custodia del cammello a caratteri di sottolineatura (caso serpente)

Ma io sono bloccato a utilizzare CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES strategia di denominazione.

La conversione corrente non riesce poiché i campi di risposta sono con "_" e il mio POJO ha il caso Snake.

Qualsiasi aiuto sarà apprezzato.

In jersey1, ho fatto questo:

MyResponse myResponse = client 
     .resource(url) 
     .type(MediaType.APPLICATION_JSON) 
     .accept(MediaType.APPLICATION_JSON) 
     .post(RequestClass.class, request); 

lo stesso io non sono in grado di raggiungere messaggio Jersey 2: Si dà errore di compilazione momento in cui ho come nel codice qui sopra:

I anche provato:

MyResponse myResponse = client 
     .target(getUrl()) 
     .request() 
     .post(Entity.entity(request, MediaType.APPLICATION_JSON)) 
     .readEntity(MyResponse.class); 

ma non è la creazione di myResponse oggetto, provocare la risposta ottengo risposta ha Snake_case ma la mia POJO ha caso cammello campi.

+0

Si prega di mostrare il codice reale –

risposta

5

Questo è qualcosa che deve essere configurato con il Jackson ObjectMapper. È possibile farlo in un ContextResolver. Fondamentalmente, è necessario qualcosa di simile

@Provider 
public class MapperProvider implements ContextResolver<ObjectMapper> { 
    final ObjectMapper mapper; 

    public MapperProvider() { 
     mapper = new ObjectMapper(); 
     mapper.setPropertyNamingStrategy(
       PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES); 
    } 

    @Override 
    public ObjectMapper getContext(Class<?> cls) { 
     return mapper; 
    } 
} 

Quindi registrare con il vostro cliente

client.register(MapperProvider.class); 

Se avete bisogno di questo supporto sul server anche, allora si avrà bisogno di registrarsi sul server anche.

+0

questo risolto. Grazie :) non può revocare la risposta a causa della bassa reputazione :( – k1133