Подтвердить что ты не робот

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"]
}

Кто-нибудь знает что?

4b9b3361

Ответ 1

Согласно комментариям Luciano, проблема заключается в том, что Джерси не использовал Джексона в качестве конвертера JSON по умолчанию. Я попробовал исключить Jettison из зависимости pom, но это все еще не решило проблему. Я нашел ответ, чтобы прямо сказать Джерси использовать Джексона здесь:

Как настроить сериализацию списка объектов JAXB в JSON?

Ответ 2

Я столкнулся с подобной проблемой и нашел простое исправление. Маркировка @JsonSerialize вместо @XmlRootElement сработала для меня.

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