जर्सी क्लाइंट एपीआई का उपयोग करते समय जेएक्सबी के बजाय जेएसओएन डेटा के लिए जैक्सन को सीरियलाइज़र/मार्शलर के रूप में उपयोग करना संभव है?जर्सी क्लाइंट सीरिएलाइज़र के रूप में जैक्सन का उपयोग
यदि ऐसा है तो इसे कॉन्फ़िगर कैसे करें?
जर्सी क्लाइंट एपीआई का उपयोग करते समय जेएक्सबी के बजाय जेएसओएन डेटा के लिए जैक्सन को सीरियलाइज़र/मार्शलर के रूप में उपयोग करना संभव है?जर्सी क्लाइंट सीरिएलाइज़र के रूप में जैक्सन का उपयोग
यदि ऐसा है तो इसे कॉन्फ़िगर कैसे करें?
ठीक है, मैं यह पता चला, यह पता चला है सब के बाद काफी सरल हो:
ClientConfig cc = new DefaultClientConfig();
cc.getClasses().add(JacksonJsonProvider.class);
Client clientWithJacksonSerializer = Client.create(cc);
JacksonJsonProvider जैक्सन-jaxrs पैकेज से आता है।
कूल, यह जानना अच्छा है। – StaxMan
कृपया इसे प्रश्न के उत्तर के रूप में चिह्नित करें। – GuiSim
नीचे भी मुट्ठी का जवाब देखें, जो कि भी आसान है। – ocroquette
आप org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider (jackson-jaxrs 1.6.1)
को भी आजमा सकते हैं।
क्या आप समझेंगे कि क्यों? –
@ landon9720 क्योंकि यह जेएक्सबी एनोटेशन के साथ-साथ डिफ़ॉल्ट जैक्सन एनोटेशन का भी समर्थन करता है। – Gijs
आप बाहरी config के निर्माण छोड़ सकते हैं और सीधे प्रदाता पंजीकृत कर सकते हैं:
Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class)
मुझे यह स्वीकार करने की अपेक्षा से अधिक लंबे समय तक इसका समाधान ढूंढ रहा था, यह काम किया !! – Brooks
जर्सी 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
मैं इसी तरह के मुद्दे में भाग गया, लेकिन मेरे लिए यहां दिए गए सुझावों में से कोई भी काम नहीं किया। क्या मेरे लिए काम किया कोड का टुकड़ा नीचे था:
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
दिलचस्प है - यह से
jersey-media-json-jackson-x.yy.jar
मैं इस लेख से इस समाधान का उपयोग करने के लिए सुराग मिल गया आता है प्रश्न: मैंने क्लाइंट एपीआई (अभी तक) का उपयोग नहीं किया है। क्या आपने जर्सी सूची में यह पूछा है? संदेश पाठकों/लेखकों को प्लग करना संभवतः निश्चित होना चाहिए, और जैक्सन जैक्स-आरएस प्लग-इन उन इंटरफेस को लागू करता है। – StaxMan
स्टैक्समैन, जर्सी क्लाइंट एपीआई जेएक्स-आरएस स्पेक का हिस्सा नहीं है। लेकिन आपका अधिकार, मुझे सबसे पहले जर्सी मेलिंग सूची पर पूछने की कोशिश करनी चाहिए। –