2012-08-09 10 views
5

RETURN_OBJ döndüren dinlenme etkinleştirilmiş bir web hizmetim var.Karma Nesnelerle REST Web Hizmeti'nden JSON Nesnesi Döndürme

Ancak kendi içinde RETURN_OBJ Böyle bir durumda

, @XmlRootElement ile katılan sınıfları şerh ve yeterli @Produces("application/json") ile web hizmeti annotating olacak vb diğer sınıf, haritalardan nesnelerin list gibi birçok karmaşık nesneler içeriyor?

Sadece çalışmıyor çalışmıyor ve no message body writer found for class hatası alıyorum.

Bu hatanın nedeni, nedeni ve çözümü nedir?

+0

i SO aranır veya Google'ın hariç olurdu umut .. http vs Jackson arasındaki mücadele için kafaları vazgeçmek istemiyorum /stackoverflow.com/questions/9256112/no-message-body-writer-found-json-apache-cxf-restful-webservices – Sikorski

cevap

2
@XmlRootElement 

xml ek açıklamaları yerine json ek açıklamaları içeren bir libary kullanmanız gerekir. örn .: jackson (http://jackson.codehaus.org/). Json yazmak için bir xml yazar kullanmayı deneyebilirsiniz. sınıflar json ek açıklamalarla birlikte açıklamalı zaman

@Produces("application/json") 

, json iade edilecektir./Bağlantı noktası // Project_name/hizmet/dinlenme: Bu biraz yardımcı olabilir umut

5

,
ardından Gson kullanılarak inşa edilmiş ve Poster ile test ve URL domainname olduğu bir json nesnesi döndürmek için bir çalışma örneğidir getjson? name = gopi

İstediğiniz gibi karmaşık bir nesne oluşturun ve son olarak Gson'u kullanarak json'a dönüştürün.

@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"; 
} 

}

PS: /: GSON ;-)