2016-04-15 18 views
5

मैंने हाल ही में जर्सी 2 पर स्विच किया है। मैं प्रलेखन/वेब के माध्यम से चला गया और पता है कि कैसे .readEntity(ClassName.class);ऊंट केस से अंडरस्कोर (सांप केस) से जर्सी JSON स्विचिंग

का उपयोग कर कस्टम वर्ग के जवाब वर्ग कन्वर्ट करने के लिए लेकिन मैं CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES नामकरण रणनीति का प्रयोग पर अटक कर रहा हूँ मिल गया।

वर्तमान रूपांतरण विफल रहता है क्योंकि प्रतिक्रिया फ़ील्ड "_" के साथ हैं और मेरे पीओजेओ में सांप केस है।

किसी भी मदद की सराहना की जाएगी।

jersey1 में, मैं यह कर दिया गया है:

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

ही मैं पद जर्सी 2 को प्राप्त करने में सक्षम नहीं हूँ: यह समय त्रुटि संकलन देता है जब मैं ऊपर कोड में के रूप में:

मैं भी करने की कोशिश की:

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

लेकिन यह myResponse वस्तु बनाने नहीं है, प्रतिक्रिया मैं Snake_case प्रतिक्रिया है पाने के कारण लेकिन मेरे POJO ऊंट मामला खेत।

+0

कृपया शोमे वास्तविक कोड –

उत्तर

5

यह ऐसा कुछ है जिसे जैक्सन ObjectMapper के साथ कॉन्फ़िगर करने की आवश्यकता है। आप इसे ContextResolver में कर सकते हैं। मूल रूप से, आप आप भी सर्वर पर इस समर्थन की जरूरत है फिर अपने ग्राहक

client.register(MapperProvider.class); 

के साथ रजिस्टर, तो आप भी सर्वर पर पंजीकरण करना होगा

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

की तरह कुछ की जरूरत है।

+0

यह हल किया गया। धन्यवाद :) कम प्रतिष्ठा के कारण उत्तर को ऊपर नहीं उठा सकता :( – k1133

संबंधित मुद्दे