JAX-RS retorna Object.toString () em vez de JSON

Suponha que você tenha uma classe anotada JAX-B e deseja retornar objetos dessa classe em um de seus serviços JAX-RS, mas o resultado é sempre igual ao de uma toString()chamada nesse objeto. Por exemplo, com.domain.MyClass@1796224é retornado, se você não substituiu toString(). O problema provavelmente será que seu método JAX-RS é anotado com em @Produces("text/plain")vez de @Produces("application/json"), o que faz sua implementação JAX-RS inteligente pensar que é mais apropriado retornar uma representação simples de String de seu objeto. Aqui está um pequeno exemplo:

MyClass.java:

@XmlRootElement
public class MyClass {
@XmlElement
private String message;
public MyClass(String message) { this.message = message; }
}

Método de serviço JAX-RS:

@GET
@Path("/rest/get/message")
@Produces("application/json")
public MyClass getMessage() {
return new MyClass("Hello world!");
}