jackson-dataformat-csv — возможны ли пользовательские имена столбцов?

#csv #jackson #export-to-csv

#csv #jackson #экспорт в csv

Вопрос:

Возможно ли определить пользовательские имена заголовков при сериализации POJO в CSV.

Другими словами, если у меня есть поле с именем someField в моем PoJO, я бы хотел, чтобы столбец заголовка в выходном CSV-файле был назван, Some custom field name например.

Спасибо.

Комментарии:

1. вы когда-нибудь разбирались в этом?

2. К сожалению, нет, я пробовал несколько разных способов с jackson, но безуспешно. Я вернулся к apache commons csv. Я могу привести пример для этого, если это вам поможет.

Ответ №1:

Это возможно при использовании mixins, поскольку вы хотите использовать эти имена только для экспорта в CSV:

Предположим, у вас есть id поле в вашем классе Pojo с получателем. Затем вы создаете абстрактный класс PojoFormat:

 public abstract class PojoFormat {
    @JsonProperty("Report Id")
    abstract Integer getId();
}
  

И в вашем коде используйте это так:

     CsvMapper mapper = new CsvMapper();

    mapper.addMixIn(Pojo.class, PojoFormat.class);
    CsvSchema schema = mapper.schemaFor(Pojo.class).withHeader();
    mapper.writer(schema).writeValueAsString(objects);
  

Комментарии:

1. @Piotr Прошу прощения, что все это время не замечал вашего ответа. Я пометил ваш ответ как принятый на основе голосов и комментариев к вашему сообщению.

2. Как насчет импорта CSV?