2016-04-15 8 views
5

Niedawno przełączyłem się na koszulkę 2,. Przeszedłem przez Documentation/sieci i poznawaliśmy, jak przerobić klasę reakcji na niestandardowej klasy, stosując .readEntity(ClassName.class);Jersey JSON przejście z przypadku wielbłąda na podkreślenia (skrzynia węża)

Ale siedzę przy użyciu CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES strategię nazewnictwa.

Aktualna konwersja kończy się niepowodzeniem, ponieważ pola odpowiedzi mają znak "_", a moje POJO ma przypadek Snake.

Każda pomoc zostanie doceniona.

W jersey1, robiłem to:

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

taka sama nie jestem w stanie osiągnąć poczta jersey 2: To daje błąd kompilacji czas, kiedy jak w powyższym kodzie:

I próbowałem też:

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

ale to nie jest tworzenie myResponse obiekt, powodują odpowiedź dostaję ma odpowiedzi Snake_case ale mój POJO ma sprawy wielbłąda pola.

+0

Proszę, pokaż prawdziwy kod –

Odpowiedz

5

Jest to coś, co należy skonfigurować za pomocą interfejsu Jackson ObjectMapper. Możesz to zrobić w ContextResolver. Zasadniczo trzeba coś podobnego

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

Następnie zarejestrować się w kliencie

client.register(MapperProvider.class); 

Jeśli potrzebujesz wsparcia na serwerze również, wtedy trzeba będzie zarejestrować się na serwerze też.

+0

to rozwiązało. Dzięki :) Nie można przegłosować odpowiedzi z powodu niskiej reputacji :( – k1133

Powiązane problemy