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
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
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
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!