我有一个已启用休息的Web服务,它返回RETURN_OBJ
。
但是,RETURN_OBJ
本身包含几个复杂的对象,如来自其他类,地图等的list
个对象。
在这种情况下,是否会使用@XmlRootElement
注释参与的类并使用@Produces("application/json")
注释足够的网络服务?
因为这样做不起作用,我收到no message body writer found for class
错误。
此错误的原因,原因和解决方案是什么?
答案 0 :(得分:5)
我希望这可能会有所帮助,
以下是一个返回json对象的工作示例,该对象使用Gson构造并使用Poster进行测试,并且url是 domainname:port // Project_name / services / rest / getjson?命名=牧牛 的
根据需要构造一个复杂的Object,最后使用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:我不想为Jackson和Gson之间的斗争提供支持; - )答案 1 :(得分:2)
@XmlRootElement
您需要使用带有json注释的库而不是xml注释。例如:杰克逊(http://jackson.codehaus.org/)。您可以尝试使用xml编写器来编写json。
@Produces("application/json")
当使用json注释对类进行注释时,将返回json。