Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Anotação para JSON

Bom dia, e se eu quisesse utilizar JSON em vez de XML na anotação do JAXB, qual anotações eu teria que usar? Estive dando uma olhada mas não encontrei nda que referencie a JSON.

obrigado

3 respostas

Fala aí César, blz?

Você precisa de alguma biblioteca que transforme seus objetos em JSON. (Por exemplo jersey-json, que você provavelmente já tem no seu classpath)

Feito isso no seu Resource você vai anotar o método que deve retornar JSON com @Produces(MediaType.APPLICATION_JSON).

Espero ter ajudado!

Oi Fernando, td certo e ai? obrigado por responder.. Então minha duvida é em relação a essa anotação na própria classe: @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD)

fazendo isso eu consigo passar o objeto direto e não preciso fazer nenhum tipo de serialização. Usando o MediaType.APPLICATION_XML no resource. O JAXB se vira.. A minha duvida é, qual anotação usar na classe para que eu consiga passar o objeto direto e não precise serializar com o GSon por exemplo, usando o Produces(MediaType.APPLICATION_JSON) no resource.

abraço

solução!

Tudo certo também,

Então é que ainda não temos uma implementação da spec de JSON-B (se eu não estou enganado ela foi aprovada esse ano).

Mas os principais providers, Jersey, Jackson e alguns outros já tem meio que implementam o draft da spec (na verdade como eles já tinham essa expertise, a spec vai meio que se adequar ao que eles já fazem).

A ideia é que você usa por exemplo aquela lib que comentei jersey-json, você não precisa anotar nada na sua classe e o jersey se vira para serializar e deserializar seu objeto para json, quando você precisar de um retorno com mediaType APPLICATION_JSON. ( E isso já funciona hoje )

Você usa as anotações na sua classe somente para customizar alguma coisa (por exemplo renomear um atributo, ignorar um atributo e etc...). Mas essa parte de customização é uma das que não está bem definida. Hoje cada implementação tem o seu jeito de customizar, cada uma com suas próprias anotações. E em alguns casos as anotações do JAX-B interferem no json que vai ser gerado. Por isso eles estão correndo atrás de implementar a spec e resolver esses problemas.

Não sei te confirmar se o GSON é um dos providers dessa nova spec ou se ele implementa algo parecido com o que o jersey e jackson fazem.

Mas minha dica é que você use, ou procure como usar um desses dois. Eles são bem fáceis de usar e você realmente não precisa fazer nada com sua classe de modelo.

Espero ter ajudado!