2012-08-09 8 views
5

RETURN_OBJを返す、公開された残りのWebサービスがあります。複合オブジェクトを使用したREST WebサービスからのJSONオブジェクトの返却

しかし、それ自体がRETURN_OBJは、このような場合には

@XmlRootElementに参加したクラスに注釈を付けると、十分な@Produces("application/json")でWebサービスに注釈を付けるになるなど、他のクラスマップのオブジェクトのlistのようないくつかの複雑なオブジェクトが含まれていますか?

これを行うだけで機能しないため、no message body writer found for classエラーが発生しています。

このエラーの原因、原因、および解決方法は何ですか?

+0

対ジャクソンとの戦いのために頭を放棄したい私は、あなたの例外を除いてSOやGoogleで検索しましたでしょう願っています...のhttp:/ /stackoverflow.com/questions/9256112/no-message-body-writer-found-json-apache-cxf-restful-webservices – Sikorski

答えて

2
@XmlRootElement 

xmlアノテーションの代わりにjsonアノテーションを持つライブラリを使用する必要があります。例:jackson(http://jackson.codehaus.org/)。 jsonを書くには、xmlライターを使用することができます。

クラスにjsonアノテーションを付けると、jsonが返されます。続き

私はこれは少し役立つかもしれない願ってい
5


Gsonを使用して構築し、PosterでテストされたJSONオブジェクトを返すための実施例であるとurlはドメイン名です:ポート// PROJECT_NAME /サービス/休憩/ getjson?name = gopi

好きなように複雑なオブジェクトを作成し、最後にGsonを使用してjsonに変換します。

@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 ;-)

関連する問題