Java - 如何使用 Jackson CSV 库将 java 对象写入 CSV 文件

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