#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?