Vocês sabem se é possível fazer uma lógica do VRaptor que recebe um parâmetro (objeto, ex: Cliente) consumir JSON enviado do cliente via ajax. Se sim, deve ser obrigatório que o JSON tenha as propriedades ‘class’ definidas am I right (para o parser)?
não precisa ter a propriedade class, mas precisa ter um root com o mesmo nome do parâmetro:
{'coisa':{restodojson}}
e o cliente tem que mandar o content-type correto
Valeu Lucas! Eu tinha chego até o Consumes, mas não tinha visto que passava o parâmetro.
Mas ainda tá dando problema pois a estrutura JSON que estou passando é um tanto complexa, é tipo uma árvore com subelementos que também são tipos complexos (classes). Neste caso ele não está se virando no parser. Eu to gerando o JSON usando o flex-json em outra aplicação, portanto estou pensando em fazer a deserialização usando a mesma biblioteca. Ainda assim seria legal continuar usando o Consumes. É possível eu trocar a implementação que deserializa o content-type application-json? ou eu tenho que inventar um outro content-type?
Valeu!!
Lucas_Cavalcanti
é possível sim, crie uma classe que implementa Deserializer, anotada com @Deserializes(“application/json”).
a partir do InputStream que veio na request vc tem que criar os parâmetros. resourceMethod.getMethod() é a assinatura do método do controller.
gfronza
Lucas Cavalcanti:
é possível sim, crie uma classe que implementa Deserializer, anotada com @Deserializes(“application/json”).
a partir do InputStream que veio na request vc tem que criar os parâmetros. resourceMethod.getMethod() é a assinatura do método do controller.
Funcionou Lucas! Show. Com o FlexJSON consegui fazer o parse 100%. Ficou muito power esta implementação de Deserializers no VRaptor3. Parabéns!