Jaxb одиночный элемент в массиве
Я использую JAXB/Jersey (1.3) для преобразования java в json в REST API. Класс java, который я возвращаю, похож:
public class MyClass {
List<String> myTags;
public List<String> getMyTags() {
return myTags;
}
}
Моя проблема в том, что если в списке myTags имеется только один элемент, тогда данные преобразуются в json как строковый объект, а не в массив строк. То есть, я получаю:
{
"myTags": "myString"
}
Я хочу:
{
"myTags": ["myString"]
}
Кто-нибудь знает что?
Ответы
Ответ 1
Согласно комментариям Luciano, проблема заключается в том, что Джерси не использовал Джексона в качестве конвертера JSON по умолчанию. Я попробовал исключить Jettison из зависимости pom, но это все еще не решило проблему. Я нашел ответ, чтобы прямо сказать Джерси использовать Джексона здесь:
Как настроить сериализацию списка объектов JAXB в JSON?
Ответ 2
Я столкнулся с подобной проблемой и нашел простое исправление. Маркировка @JsonSerialize вместо @XmlRootElement сработала для меня.
@JsonSerialize
public class MyClass {
List<String> myTags;
public List<String> getMyTags() {
return myTags;
}
}