最佳语言工具库 返回
-
Java - 如何使用 Jackson CSV 库将 java 对象写入 CSV 文件
-
一、概述
在这篇文章中,我们将使用 Jackson CSV 处理器将 java 对象保存到 CSV 文件中。
要使用 Jackson CSV 库,我们需要将 jackson-dataformat-csv 依赖项添加到 pom.xml。
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-csv</artifactId>
<version>2.9.9</version>
</dependency>2.将java对象写入CSV文件
下面我们有 2 个类,我们需要将简单的 UserDto java 类保存到 CSV 文件。
确保设置正确的路径和文件名作为输出。要运行此示例,请将这两个文件复制到您的项目中:
- UserCsvWriter
- UserDto
2.1 逻辑
使用 Jackson CSV 库将 UserDto java pojo 对象保存到 CSV 文件的逻辑。
类的用法:
- jackson CSV 库里的 CsvMapper + CsvSchema
- jackson databind 库里的 ObjectWriter
- jackson core 库里的 JsonGenerator
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class UserCsvWriter {
public static void main(String[] args) throws IOException {
// set correct directory as output
File csvOutputFile = new File("C:\\csv_tests\\user_output.csv");UserDto userDto1 = new UserDto(1L, "Ann", 30);
UserDto userDto2 = new UserDto(2L, "Seth", 28);
UserDto userDto3 = new UserDto(3L, "Emm", 24);List<UserDto> list = new ArrayList<>(Arrays.asList(userDto1, userDto2, userDto3));
CsvMapper mapper = new CsvMapper();
mapper.configure(JsonGenerator.Feature.IGNORE_UNKNOWN, true);CsvSchema schema = CsvSchema.builder().setUseHeader(true)
.addColumn("id")
.addColumn("name")
.addColumn("age")
.build();ObjectWriter writer = mapper.writerFor(UserDto.class).with(schema);
writer.writeValues(csvOutputFile).writeAll(list);
System.out.println("Users saved to csv file under path: ");
System.out.println(csvOutputFile);
}
}输出
Users saved to csv file under path:
C:\csv_tests\user_output.csvPOJO 类
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonPropertyOrder({"id", "name", "age"})
public class UserDto {private Long id;
private String name;
private Integer age;public UserDto() {
}
public UserDto(Long id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}public Long getId() {
return id;
}public void setId(Long id) {
this.id = id;
}public String getName() {
return name;
}public void setName(String name) {
this.name = name;
}public Integer getAge() {
return age;
}public void setAge(Integer age) {
this.age = age;
}@Override
public String toString() {
return "UserDto{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}原文链接:
https://dirask.com/posts/Java-how-to-write-java-object-to-CSV-file-using-Jackson-CSV-library-8pVk0j
-