Я ищу быстрое / простое решение, как автоматически сериализовать выходные данные контроллеров Rest в CSV вместо JSON. У меня самое простое из возможных приложений загрузки Spring:
@SpringBootApplication
public class CsvExportApplication {
public static void main(String[] args) {
SpringApplication.run(CsvExportApplication.class, args);
}
}
class User {
String name;
String surname;
public User(String name, String surname) {
this.name = name;
this.surname = surname;
}
public void setName(String name) {
this.name = name;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getName() {
return name;
}
public String getSurname() {
return surname;
}
}
@RestController
class UserController {
@GetMapping(value = "/users")
List<User> list() {
return Arrays.asList(new User("adam", "kowalsky"), new User("john", "smith"));
}
}
Я использовал jackson-dataformat-csv
и придумал следующий код, который сериализует List<User>
до String
, но в идеале я не хочу менять код контроллера остальных:
CsvMapper mapper = new CsvMapper();
CsvSchema schema = mapper.schemaFor(User.class).withHeader();
mapper.writerFor(List.class).with(schema).writeValueAsString(users);
В идеале я бы хотел, чтобы мои контроллеры могли возвращать выходные данные в формате JSON или CSV в зависимости от заголовка Accept в запросе.