在线文字转语音网站:无界智能 aiwjzn.com

Jackson Dataformat CSV 框架入门指南

Jackson Dataformat CSV 框架入门指南

Jackson Dataformat CSV 是一个 Java 库,用于读写 CSV 文件。本文将为读者介绍如何使用 Jackson Dataformat CSV 框架进行 CSV 文件的操作。 首先,需要在项目的 pom.xml 文件中添加以下依赖: <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-csv</artifactId> <version>2.12.3</version> </dependency> 完成依赖添加后,我们可以开始使用 Jackson Dataformat CSV 框架。 ## 读取 CSV 文件 假设我们有一个名为 "data.csv" 的文件,其内容如下: name,age,email 张三,25,zhangsan@example.com 李四,30,lisi@example.com 王五,35,wangwu@example.com 我们将使用 Jackson Dataformat CSV 框架将该文件读取为对象。 首先,我们需要创建一个 POJO 类来映射 CSV 文件中的数据。在这个例子中,我们可以创建一个名为 "Person" 的类: import com.fasterxml.jackson.annotation.JsonProperty; public class Person { @JsonProperty("name") private String name; @JsonProperty("age") private int age; @JsonProperty("email") private String email; // 省略 getter 和 setter 方法 } 然后,我们可以使用以下代码来读取 CSV 文件并将其映射到对象列表: import com.fasterxml.jackson.databind.MappingIterator; 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.List; public class CsvReader { public static void main(String[] args) { try { CsvMapper mapper = new CsvMapper(); CsvSchema schema = mapper.schemaFor(Person.class).withHeader().withColumnReordering(true); File file = new File("data.csv"); MappingIterator<Person> it = mapper.readerFor(Person.class).with(schema).readValues(file); List<Person> persons = it.readAll(); for (Person person : persons) { System.out.println(person.getName() + ", " + person.getAge() + ", " + person.getEmail()); } } catch (IOException e) { e.printStackTrace(); } } } 在上述代码中,我们首先创建了 CsvMapper 对象和 CsvSchema 对象。然后,通过指定 POJO 类型来构建 CsvSchema 对象,并指定 CSV 文件包含头部和允许列的重新排序。接下来,我们创建了一个 File 对象,表示要读取的 CSV 文件。最后,我们使用 mapper.readerFor(Person.class).with(schema).readValues(file) 方法来获取 MappingIterator 对象,然后使用该对象的 readAll() 方法将 CSV 文件映射到对象列表中。最后,我们可以遍历对象列表并打印每个 Person 对象的属性。 ## 写入 CSV 文件 除了读取 CSV 文件,Jackson Dataformat CSV 还提供了将对象列表写入 CSV 文件的功能。 假设我们有一个名为 "persons.csv" 的文件,我们将使用以下代码将 Person 对象列表写入该文件: import com.fasterxml.jackson.databind.MappingIterator; 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.List; public class CsvWriter { public static void main(String[] args) { try { CsvMapper mapper = new CsvMapper(); CsvSchema schema = mapper.schemaFor(Person.class).withHeader().withColumnReordering(true); File file = new File("persons.csv"); List<Person> persons = new ArrayList<>(); persons.add(new Person("张三", 25, "zhangsan@example.com")); persons.add(new Person("李四", 30, "lisi@example.com")); persons.add(new Person("王五", 35, "wangwu@example.com")); mapper.writer(schema).writeValue(file, persons); } catch (IOException e) { e.printStackTrace(); } } } 在上述代码中,我们创建了 CsvMapper 对象和 CsvSchema 对象,与读取 CSV 文件的操作类似。然后,我们创建一个 File 对象,表示要写入的 CSV 文件。接下来,我们创建了一个 Person 对象列表,并将三个 Person 对象添加到列表中。最后,我们使用 mapper.writer(schema).writeValue(file, persons) 方法将 Person 对象列表写入 CSV 文件。 完成以上操作后,我们可以在项目的目录中找到生成的 "persons.csv" 文件,其内容与所添加的 Person 对象一致。 本文介绍了如何使用 Jackson Dataformat CSV 框架进行 CSV 文件的读写操作。我们首先了解如何读取 CSV 文件并将其映射到对象列表,然后学习了如何将对象列表写入 CSV 文件。通过这些示例代码,读者可以更好地理解 Jackson Dataformat CSV 的使用方法及相关配置。