xmlrootelement una porque falta elemento como anotación jaxb jersey

jaxb - como un elemento porque le falta una anotación @xmlrootelement



jaxb solo elemento en matriz (2)

Me enfrentaba a un problema similar y encontré una solución simple. Marks @JsonSerialize en lugar de @XmlRootElement ha funcionado para mí.

@JsonSerialize public class MyClass { List<String> myTags; public List<String> getMyTags() { return myTags; } }

Estoy usando JAXB / Jersey (1.3) para convertir java a json en una API REST. La clase de java que estoy regresando es como:

public class MyClass { List<String> myTags; public List<String> getMyTags() { return myTags; } }

Mi problema es que si solo hay un único elemento en la lista myTags , los datos se convierten a json como un objeto de cadena, no como una matriz de cadenas. Es decir, me sale:

{ "myTags": "myString" }

Lo que quiero es:

{ "myTags": ["myString"] }

Alguien sabe lo que pasa?


Según los comentarios de Luciano, el problema radica en el hecho de que Jersey no estaba utilizando Jackson como el convertidor JSON predeterminado. Intenté excluir a Jettison de la dependencia de pom, pero aún así no resolvió el problema. Encontré una respuesta para decirle explícitamente a Jersey que usara a Jackson aquí:

¿Cómo puedo personalizar la serialización de una lista de objetos JAXB a JSON?