/ / जर्सी 1.17.1 POJO मैपिंग फ़ीचर सर्वर और क्लाइंट से कैसे प्राप्त करें? - json, जर्सी, jackson, pojo, जर्सी-क्लाइंट

जर्सी 1.17.1 POJO मैपिंग फ़ीचर सर्वर और क्लाइंट से कैसे प्राप्त करें? - json, जर्सी, jackson, pojo, जर्सी-क्लाइंट

मैं सर्वर पर REST सेवा चला रहा हूं और मैं चाहता हूंPOJO की मेरी सूची को Json में बदलने के लिए। मैं @XMLRootElement JA-RX का उपयोग नहीं करना चाहता, क्योंकि यह केवल XML के लिए अच्छा है। यदि आप Google को यह पता चलेगा कि जैक्सन Json के लिए बहुत अच्छा विकल्प है।

क्या कोई है जिसने इस समस्या को हल किया है और कृपया पूरा सर्वर और क्लाइंट कोड पेस्ट करें?

ध्यान दें: मुझे यह पता लगाने में 16 घंटे लगे कि मुझे यह कैसे करना है और जब मैंने उन सवालों के जवाब दिए तो उन्होंने मेरा जवाब हटा दिया, इसलिए मैंने दूसरों के मूल्यवान समय को बचाने के लिए इसे यहाँ रखने का फैसला किया और मुझे ज्ञान साझा करने में विश्वास है। कृपया अगर आप अपना कोड सुधार सकते हैं। मैं हमेशा सुझावों के लिए खुला हूं।

उत्तर:

उत्तर № 1 के लिए 11

विस्तृत उत्तर शामिल हैं सर्वर तथा ग्राहक के साथ नमूना कार्यान्वयन JSON मार्शलिंग और अनमर्सहॉलिंग

ध्यान दें: जैसन POJO मैपिंग फीचर जैक्सन का उपयोग करके किया जाता है

मैंने पूरा दिन फ़िनडिग में बिताया क्योंकि मैसेज बॉडी राइट क्यों नहीं मिला। मैं जो कर रहा था वह गलत है JAXB javax.xml.bind.annotation @XMLRootElement मेरी जर्सी में 1.17.1 वेब सेवा और मैं इसे जैक्सन के साथ अनमार्ट करने की कोशिश कर रहा था।

यदि आप इसे Google को खोजते हैं, तो आप इसे पा सकते हैं JAXB केवल XML के लिए अच्छा है, लेकिन JSON के लिए जैक्सन उत्कृष्ट है। मैं भी कुछ कॉन्फ़िगरेशन पैरामीटर्स अपने में डालना भूल गया web.xml POJO मैपिंग सुविधा को सक्षम करें।

यहां यह बताया गया है कि जैक्सन की POJO मैपिंग सुविधा को सक्षम करने के लिए आपको अपने सर्वलेट मैपिंग कैसे करना चाहिए।

<!-- WebService -->
<servlet>
<servlet-name>REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
<param-value>com.sun.jersey.api.container.filter.LoggingFilter;com.algo.server.webservice.WebServiceRequestFilter</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.algo.server.webservice;org.codehaus.jackson.jaxrs</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>

आपको उन जार फ़ाइलों को अपने WEB-INF / libs फ़ोल्डर में जोड़ना होगा

  • jackson-core-asl-1.9.2.jar
  • jackson-mapper-asl-1.9.2.jar
  • jackson-xc-1.9.2.jar
  • jackson-jaxrs-1.9.2.jar

यह एक नमूना वेब सेवा विधि है जो कुछ वस्तुओं की सूची लौटाती है

    @GET
@Produces({ MediaType.APPLICATION_JSON })
@Path("/clientId/{client_id}/clientDept/{client_department}/clientLoc/{client_location}")
public Response getTasksForClientId(@PathParam("client_id") String pClientId,
@PathParam("client_department") String pClientDepartment,
@PathParam("client_location") String pClientLocation) {
List<Task> list = new ArrayList<Task>(10);
Task task = null;
for (int i = 0; i < 10; i++) {
task = new Task();
task.setComments("These are test comments");
task.setCreatedBy(11L);
task.setCreatedOn(new Date());
task.setFromDay(new Date());
task.setFromTime(new Date());
task.setToTime(new Date());
task.setToDay(new Date());
task.setUpdatedOn(new Date());
task.setLocation("Pakistan Punajb");
task.setSpecialCoverImage("webserver\cover\cover001.png");
task.setTargetId(1L);
task.setTargetPlaceHolder(2);
task.setUpdatedBy(23234L);
list.add(task);
}
GenericEntity<List<Task>> entity = new GenericEntity<List<Task>>(list) {
};
return Response.ok(entity).build();
}

ग्राहक की ओर

अब इस JSON ऑब्जेक्ट को क्लाइंट साइड में कन्वर्ट करने के लिए कैसे उपयोग करें List<T> वस्तु। यह एक पाप है :-)

आपको उसी कक्षा से सर्वर को डालना होगा जिसे आपने POJO में परिवर्तित किया है। यह शूलब समान है

private void checkForUpdate() {
ClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
clientConfig.getClasses().add(JacksonJsonProvider.class);
Client client = Client.create(clientConfig);

WebResource webResource = client.resource("http://localhost:8080/some-server");

WebResource wr = webResource.path("rest").path("taskPublisherService").path("clientId/12").path("clientDept/2").path("clientLoc/USA");

ClientResponse clientResponse = wr.type(MediaType.APPLICATION_JSON).get(ClientResponse.class);

List<Task> lists = clientResponse.getEntity(new GenericType<List<Task>>() {});

System.out.println(lists);

}

जवाब के लिए 3 № 2

जर्सी के इस एक में उपरोक्त सभी JAR शामिल हैं:

<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>${version.jersey}</version>
<scope>runtime</scope>
</dependency>