vRaptor - Result JSON [RESOLVIDO]

Minha dúvida é a seguinte…

result.use(json()).from(object).serialize();

Isso vai gerar um JSON do “object” na resposta…
Porém, eu preciso customizar esse JSON de retorno, sendo ele uma String Java que eu crio na mão.

Como faço esse retorno?

Tentei utilizar HttpServletResponse mas dá 404, acredito que devido a convenção do vRaptor…

Você pode criar uma classe que recebe esse objeto e seta os atributos que você precisa:

public class ObjJSON {
   private final long id;
   private final String name;

   public ObjJSON (Obj obj){ // Converte de obj para ObjJSON
      this.id = obj.getId();
      this.name = obj.getName();
   }
}

// chamada
result.use(Results.json()).from(new ObjJSON(obj)).serialize();

Mas se eu já tenho o “JSON” em String… não há um meio de dar o response dele?

Alguém?!?!?!

Você pode criar uma JSP com o nome da sua action, assim:

// Action
@Get("/get/json/")
public String getJSON (){
   return service.getJSON();
}

// O nome dessa JSP DEVE SER: getJSON.json.jsp
// JSP
${string}

Assim o VRaptor reconhece que é um JSON.

Ok. Vou ver oq faço. Vlw!

se vc quer colocar uma string já gerada pode usar:

result.use(Results.http()).body(oJsonAqui);

Opa!
Agora sim RESOLVIDO. Vlw.