2012-08-09 15 views
5

के साथ आरईएसटी वेब सेवा से JSON ऑब्जेक्ट लौट रहा है मेरे पास एक बाकी सक्षम वेब सेवा है जो RETURN_OBJ लौटाती है।कॉम्प्लेक्स ऑब्जेक्ट्स

हालांकि, अपने आप में RETURN_OBJ कई जटिल वस्तुओं अन्य वर्ग, नक्शे से वस्तुओं की list की तरह, आदि

इस तरह के एक मामले में, @XmlRootElement साथ भाग लेने वाले वर्गों व्याख्या और @Produces("application/json") पर्याप्त के साथ वेब सेवा व्याख्या शामिल होते हैं?

क्योंकि ऐसा करने से यह काम नहीं कर रहा है और मुझे no message body writer found for class त्रुटि मिल रही है।

इस त्रुटि के कारण, कारण और समाधान क्या है?

+0

मैं आशा है कि आप इतना खोज नहीं की होगी या अपने अपवाद के साथ गूगल .. http जैक्सन के बीच लड़ाई के लिए सिर देने के लिए चाहते हैं /stackoverflow.com/questions/9256112/no-message-body-writer-found-json-apache-cxf-restful-webservices – Sikorski

उत्तर

2
@XmlRootElement 

आपको एक्सएमएल एनोटेशन के बजाय जेसन एनोटेशन के साथ एक libary का उपयोग करने की आवश्यकता है। पूर्व: जैक्सन (http://jackson.codehaus.org/)। आप जेसन लिखने के लिए एक एक्सएमएल लेखक का उपयोग करने का प्रयास कर सकते हैं।

@Produces("application/json") 

जब कक्षाएं जेसन एनोटेशन के साथ एनोटेट की जाती हैं, तो जेसन वापस आ जाएगा। पोर्ट // प्रोजेक्ट/सेवाओं/बाकी /:

5

मुझे आशा है कि यह एक सा मदद कर सकता है,
के बाद एक json वस्तु जो Gson का प्रयोग कर बनाया और Poster के साथ परीक्षण किया और यूआरएल है domainname था लौटने के लिए एक काम कर उदाहरण है getjson? name = gopi

एक जटिल वस्तु का निर्माण करें जैसा कि आप पसंद करते हैं और अंततः जीसन का उपयोग करके जेसन में परिवर्तित करते हैं।

@Path("rest") 
public class RestImpl { 

@GET 
@Path("getjson") 
@Produces("application/json") 
public String restJson(@QueryParam("name") String name) 
{ 
    EmployeeList employeeList = new EmployeeList(); 
    List<Employee> list = new ArrayList<Employee>(); 
    Employee e = new Employee(); 
    e.setName(name); 
    e.setCode("1234"); 
    Address address = new Address(); 
    address.setAddress("some Address"); 
    e.setAddress(address); 
    list.add(e); 
    Employee e1 = new Employee(); 
    e1.setName("shankar"); 
    e1.setCode("54564"); 
    Address address1 = new Address(); 
    address.setAddress("Address "); 
    e1.setAddress(address); 
    list.add(e1); 
    employeeList.setEmplList(list); 

    Gson gson = new Gson(); 
    System.out.println(gson.toJson(employeeList)); 
    return gson.toJson(employeeList); 

} 

@GET 
@Produces("text/html") 
public String test() 
{ 
    return "SUCCESS"; 
} 

}

पुनश्च: /: मैं बनाम Gson ;-)

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