Использование привязки Jackson XML для сопоставления списков с Pojo

Я использую привязку XML Джексона для преобразования XML в список Java с помощью первоначального сопоставления с Java POJO. То, что я написал, работает, но я не думаю, что правильно использую Джексона.

Я застрял с этим уродливым XML:

<groups>
  <groups>One</groups>
  <groups>Two</groups>
  <groups>Three</groups>
</groups>

Вот Java POJO, который я использую. Обратите внимание setGroups(String) Метод фактически добавляет в список.

public class Groups {
   private List<String> groups = new ArrayList<String>();

   public void setGroups(String group) {
      groups.add(group);
   }

   public List<String> getGroups() { 
      return this.groups;
   }
}

Вот как я вызываю XmlMapper Джексона.

public List<String> getListOfGroups(String xmlDoc) {
   XmlMapper mapper = new XmlMapper();
   Groups groups = mapper.readValue(xmlDoc, Groups.class);
   return groups.getGroups();
}

Это на самом деле работает, как мне нужно, чтобы работать. Я получаю класс Groups со списком, заполненным ожидаемыми элементами. Мне интересно, правильный ли подход? Мне не нравится, что у меня есть сеттер, который делает добавление, но все, что я пробовал, не сработало.

1 ответ

Ваш POJO может быть простым, как это:

public class Groups {
    private List<String> groups;

    public List<String> getGroups() { 
        return this.groups;
    }
}

Это будет работать нормально, так как вы используете MapperFeature.USE_GETTERS_AS_SETTERS (по умолчанию включено).

Другие вопросы по тегам