2016-04-15 31 views
5

Kısa bir süre önce jersey 2'ye geçtim. Ben dokümantasyon/web üzerinden gitti ve .readEntity(ClassName.class);Jersey JSON Deve kasasından alt çizgiye geçiş (yılan çantası)

kullanarak özel sınıfına tepki sınıfı dönüştürmek Ama CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES adlandırma stratejisi kullanarak şaşırıp nasıl bilmek lazım.

Yanıt alanları "_" ile ve POJO'm Snake case'de olduğu için geçerli dönüştürme başarısız oluyor.

Herhangi bir yardım için teşekkür ederiz. jersey1 olarak

, ben bu yapıyor:

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

Ben sonrası formayı 2 elde etmek mümkün değilim aynı: Bu derleme zamanı hatası verdiğinde ben yukarıdaki örnekteki gibi:

ben

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

ama ben Snake_case tepkisini sahiptir olsun yanıta neden, myResponse nesne oluştururken değil ama benim POJO deve durum var: Ayrıca çalıştı alanlar.

+0

Lütfen bu gerçek kodu –

cevap

5

Bu, Jackson ObjectMapper ile yapılandırılması gereken bir şeydir. Bunu ContextResolver'da yapabilirsiniz. Temel olarak, ayrıca sunucuda bu desteği gerekiyorsa Sonra o zaman çok sunucuda kaydetmeniz gerekir, müşteriniz

client.register(MapperProvider.class); 

kayıt

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

gibi bir şey gerekiyor.

+0

bunu gösterir. Teşekkürler :) düşük itibar nedeniyle cevap veremezsiniz :( – k1133