2010-03-21 11 views
34

जर्सी क्लाइंट एपीआई का उपयोग करते समय जेएक्सबी के बजाय जेएसओएन डेटा के लिए जैक्सन को सीरियलाइज़र/मार्शलर के रूप में उपयोग करना संभव है?जर्सी क्लाइंट सीरिएलाइज़र के रूप में जैक्सन का उपयोग

यदि ऐसा है तो इसे कॉन्फ़िगर कैसे करें?

+0

दिलचस्प है - यह से jersey-media-json-jackson-x.yy.jar

मैं इस लेख से इस समाधान का उपयोग करने के लिए सुराग मिल गया आता है प्रश्न: मैंने क्लाइंट एपीआई (अभी तक) का उपयोग नहीं किया है। क्या आपने जर्सी सूची में यह पूछा है? संदेश पाठकों/लेखकों को प्लग करना संभवतः निश्चित होना चाहिए, और जैक्सन जैक्स-आरएस प्लग-इन उन इंटरफेस को लागू करता है। – StaxMan

+0

स्टैक्समैन, जर्सी क्लाइंट एपीआई जेएक्स-आरएस स्पेक का हिस्सा नहीं है। लेकिन आपका अधिकार, मुझे सबसे पहले जर्सी मेलिंग सूची पर पूछने की कोशिश करनी चाहिए। –

उत्तर

54

ठीक है, मैं यह पता चला, यह पता चला है सब के बाद काफी सरल हो:

ClientConfig cc = new DefaultClientConfig(); 
cc.getClasses().add(JacksonJsonProvider.class); 
Client clientWithJacksonSerializer = Client.create(cc); 

JacksonJsonProvider जैक्सन-jaxrs पैकेज से आता है।

+1

कूल, यह जानना अच्छा है। – StaxMan

+1

कृपया इसे प्रश्न के उत्तर के रूप में चिह्नित करें। – GuiSim

+0

नीचे भी मुट्ठी का जवाब देखें, जो कि भी आसान है। – ocroquette

4

आप org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider (jackson-jaxrs 1.6.1) को भी आजमा सकते हैं।

+0

क्या आप समझेंगे कि क्यों? –

+0

@ landon9720 क्योंकि यह जेएक्सबी एनोटेशन के साथ-साथ डिफ़ॉल्ट जैक्सन एनोटेशन का भी समर्थन करता है। – Gijs

16

आप बाहरी config के निर्माण छोड़ सकते हैं और सीधे प्रदाता पंजीकृत कर सकते हैं:

Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class) 
+0

मुझे यह स्वीकार करने की अपेक्षा से अधिक लंबे समय तक इसका समाधान ढूंढ रहा था, यह काम किया !! – Brooks

0

जर्सी 2.22.2 और जैक्सन के लिए 2.7.2 Gradle निर्भरता हैं:

dependencies { 
    compile("com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.7.2") 
    compile("org.glassfish.jersey.core:jersey-client:2.22.2") 
} 

नमूना ग्राहक कोड है:

final String name = "world"; 
final Client client = ClientBuilder.newClient().register(JacksonJaxbJsonProvider.class); 
final WebTarget target = client.target("http://localhost:8080").path("hello").path(name); 
final Message message = target.request().get(Message.class); 

System.out.println(message.getWelcomeMessage()); // hello world 
0

मैं इसी तरह के मुद्दे में भाग गया, लेकिन मेरे लिए यहां दिए गए सुझावों में से कोई भी काम नहीं किया। क्या मेरे लिए काम किया कोड का टुकड़ा नीचे था:

import javax.ws.rs.client.ClientBuilder; 
import javax.ws.rs.client.Client; 
... 

ClientBuilder clientBuilder = ClientBuilder.newBuilder() 
clientBuilder.register(JacksonFeature.class); 
... 
Client client = clientBuilder.build(); 

कुंजी परिवर्तन किया गया JacksonFeature.class का उपयोग - http://www.baeldung.com/jersey-jax-rs-client