के लिए स्ट्रिंग देता है मैं सर्वर घटक के लिए वेब सेवा बनाने के लिए जर्सी का उपयोग कर रहा हूं। दुर्भाग्यवश मुझे अपने JSON प्रतिक्रिया के प्रारूपण में कोई समस्या है, क्योंकि डेटा हमेशा स्ट्रिंग के रूप में स्वरूपित होता है।जर्सी में जेएसओएन सीरियलाइजेशन के लिए जेएक्सबी एनोटेटेड पीओजेओ प्रत्येक फ़ील्ड प्रकार
मैं विभिन्न फ़ील्ड के साथ एक सरल JAXB एनोटेट POJO है:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class JaxbPojo {
@XmlElement(name = "id_64")
private Long id;
@XmlElement(name = "desc")
private String description;
private Boolean active;
// getters and setters
..
}
और आ सरल संसाधन, आने वाली वस्तु लौटने:
@Path("/jaxb_pojo")
public class JaxbPojoResource {
@POST
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public JaxbPojo processBidRequest(JaxbPojo pojo) {
return pojo;
}
}
जब निम्नलिखित के साथ संसाधन के लिए एक अनुरोध भेजने JSON डेटा, ऑब्जेक्ट संसाधन विधि के अंदर सही ढंग से भर जाता है।
[email protected]:/tmp $ cat simple_jaxb_pojo
{"id_64":99,"desc":"simple JAXB POJO","active":true}
[email protected]:/tmp $ curl -X POST -H "Content-Type: application/json" --data-binary @simple_jaxb_pojo http://localhost/srvr/rest/jaxb_pojo
{"id_64":"99","desc":"simple JAXB POJO","active":"true"}
सभी इस्तेमाल किया जार फ़ाइलें (jsr311-api-1.1.1.jar, जर्सी कोर-1.6.jar, जर्सी-json-1.6: लेकिन लौटे JSON डेटा के क्षेत्र प्रकार हमेशा स्ट्रिंग के रूप में स्वरूपित हैं .jar, जर्सी-सर्वर-1.6.jar) सीधे टोमकैट/lib पथ में शामिल हैं। JAX-आरएस पुस्तकालय "प्रदान" गुंजाइश के साथ Maven pom.xml के माध्यम से किया जाता है:
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
मेरे web.xml इस तरह दिखता है:
<servlet>
<servlet-name>RestServlet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.rest.RestResourcesApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
..
<servlet-mapping>
<servlet-name>RestServlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
मैं कुछ याद आ रही हूँ या मैं शायद करने के लिए क्या जैक्सन को स्पष्ट रूप से इस तरह से कॉन्फ़िगर करें कि यह मेरे POJO के प्रकारों का उपयोग कर रहा है। मैं इस विषय के लिए बिल्कुल नया हूं, इसलिए मैंने इस पर हर जानकारी पोस्ट की है। मुझे आशा है कि कोई मदद कर सकता है।
आपके उत्तर के लिए धन्यवाद। लेकिन इसे जोड़ा गया मुझे निम्नलिखित अपवाद मिलता है: सेव: जावा क्लास के लिए एक संदेश बॉडी रीडर .. जैक्सबोजोजो, और जावा टाइप क्लास .. जैक्सबोजोजो, और एमआईएम मीडिया टाइप एप्लिकेशन/जेसन नहीं मिला 18.10.2012 18:56:43 कॉम .sun.jersey.spi.container।ContainerRequest getEntity गंभीर: पंजीकृत संदेश के मुख्य भाग पाठकों माइम मीडिया प्रकार के साथ संगत कर रहे हैं: आवेदन/json -> com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider $ अनुप्रयोग com.sun.jersey.json .impl.provider.entity.JSONRootElementProvider $ ऐप com.sun.jersey.json.impl.provider.entity.JSONListElementProvider $ – henne83
क्या आप निश्चित हैं कि 'जर्सी-जेसन' निर्भरता आपके क्लासपाथ पर है (और यह सही ढंग से स्कॉप्ड है आपका पीओएम)? मैंने अपने पीओएम से इसे हटाने की कोशिश की और आपको वही अपवाद मिला जो आपने किया था। – condit
मजेदार बात यह काम करती है, जब मैं को जर्सी निर्भरताओं के लिए pom.xml के अंदर प्रदान करता हूं। दायरा क्षेत्र सेट होने के बाद, यह ऊपर अपवाद फेंकता है। –
henne83