Java RestEasy-Jax-rs-在响应体中发送自定义对象

Java RestEasy-Jax-rs-在响应体中发送自定义对象,java,rest,jax-rs,response,resteasy,Java,Rest,Jax Rs,Response,Resteasy,如何在响应中发送自定义对象。我只想从我的对象打印值 假设我有一个Person类型的对象。我正试着像这样发送REST响应体 ResponseBuilder response = Response.ok().entity(personObj); return response.build(); 但是我得到了500错误。 我也试过这个: ResponseBuilder response = Response.status(Status.OK).entity(personObj); r

如何在响应中发送自定义对象。我只想从我的对象打印值

假设我有一个
Person
类型的对象。我正试着像这样发送REST响应体

  ResponseBuilder response = Response.ok().entity(personObj);
  return response.build();
但是我得到了
500
错误。 我也试过这个:

  ResponseBuilder response = Response.status(Status.OK).entity(personObj);
  return response.build();
同样的错误

已尝试将内容类型设置为
text/xml
。没用。 我错过了什么?我试着用谷歌搜索。但并没有太多的例子,尤其是自定义对象


如果我只是将一个字符串传递给
entity()
方法,它返回的结果很好。

为了从Resteasy资源方法返回数据,您需要根据尝试返回的内容执行几项操作

  • 您需要使用
    @products
    注释来告诉Resteasy方法的返回类型应该是什么 是

    例如,下面的方法返回XML和JSON,具体取决于客户机在其
    Accept
    头中要求的内容

默认情况下,Resteasy支持编组以下数据类型:

如果您希望支持的数据类型在此表中,则 这意味着它们受JAXB支持,您所需要做的就是注释 您的
PersonObj
类使用JAXB注释告诉它如何 马歇尔和解开目标


如果您的内容类型不受开箱即用支持,该怎么办? 如果您有一个要整理的自定义内容类型,那么您需要创建一个
MessageBodyWriter
实现,告诉Resteasy如何整理该类型

Provider
@Produces({"application/x-mycustomtype"})
public class MyCustomTypeMessageBodyWriter implements MessageBodyWriter {

}
只需实现接口,并像任何其他提供者一样注册它

如果要读取自定义内容类型,则需要实现自定义
MessageBodyReader
来处理传入类型,并将其添加到接收方法上的
@Consumes
注释中

@XmlRootElement
@XmlType(propOrder = {"firstName", "lastName"})
public class PersonObj
{
  private String firstName;
  private String lastName;

  //Getters and Setters Removed For Brevity
}
Provider
@Produces({"application/x-mycustomtype"})
public class MyCustomTypeMessageBodyWriter implements MessageBodyWriter {

}