← 返回内容列表

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

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>&nbsp;</p> <p>&lt;dependency&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;com.fasterxml.jackson.dataformat&lt;/groupId&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;jackson-dataformat-csv&lt;/artifactId&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;2.9.9&lt;/version&gt;<br /> &lt;/dependency&gt;</p> <p>&nbsp;</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&nbsp;</li> <li>jackson databind 库里的 ObjectWriter&nbsp;</li> <li>jackson core 库里的 JsonGenerator</li> </ul> <p>&nbsp;</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>&nbsp; &nbsp; public static void main(String[] args) throws IOException {</p> <p>&nbsp; &nbsp; &nbsp; &nbsp; // set correct directory as output<br /> &nbsp; &nbsp; &nbsp; &nbsp; File csvOutputFile = new File(&quot;C:\\\\csv_tests\\\\user_output.csv&quot;);</p> <p>&nbsp; &nbsp; &nbsp; &nbsp; UserDto userDto1 = new UserDto(1L, &quot;Ann&quot;, 30);<br /> &nbsp; &nbsp; &nbsp; &nbsp; UserDto userDto2 = new UserDto(2L, &quot;Seth&quot;, 28);<br /> &nbsp; &nbsp; &nbsp; &nbsp; UserDto userDto3 = new UserDto(3L, &quot;Emm&quot;, 24);</p> <p>&nbsp; &nbsp; &nbsp; &nbsp; List&lt;UserDto&gt; list = new ArrayList&lt;&gt;(Arrays.asList(userDto1, userDto2, userDto3));</p> <p>&nbsp; &nbsp; &nbsp; &nbsp; CsvMapper mapper = new CsvMapper();<br /> &nbsp; &nbsp; &nbsp; &nbsp; mapper.configure(JsonGenerator.Feature.IGNORE_UNKNOWN, true);</p> <p>&nbsp; &nbsp; &nbsp; &nbsp; CsvSchema schema = CsvSchema.builder().setUseHeader(true)<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .addColumn(&quot;id&quot;)<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .addColumn(&quot;name&quot;)<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .addColumn(&quot;age&quot;)<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .build();</p> <p>&nbsp; &nbsp; &nbsp; &nbsp; ObjectWriter writer = mapper.writerFor(UserDto.class).with(schema);</p> <p>&nbsp; &nbsp; &nbsp; &nbsp; writer.writeValues(csvOutputFile).writeAll(list);</p> <p>&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;Users saved to csv file under path: &quot;);<br /> &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(csvOutputFile);<br /> &nbsp; &nbsp; }<br /> }</p> <p>&nbsp;</p> <p>输出</p> <p>Users saved to csv file under path:<br /> C:\\csv_tests\\user_output.csv</p> <p>&nbsp;</p> <p>POJO 类</p> <p>&nbsp;</p> <p>import com.fasterxml.jackson.annotation.JsonPropertyOrder;</p> <p>@JsonPropertyOrder({&quot;id&quot;, &quot;name&quot;, &quot;age&quot;})<br /> public class UserDto {</p> <p>&nbsp; &nbsp; private Long id;<br /> &nbsp; &nbsp; private String name;<br /> &nbsp; &nbsp; private Integer age;</p> <p>&nbsp; &nbsp; public UserDto() {</p> <p>&nbsp; &nbsp; }</p> <p>&nbsp; &nbsp; public UserDto(Long id, String name, Integer age) {<br /> &nbsp; &nbsp; &nbsp; &nbsp; this.id = id;<br /> &nbsp; &nbsp; &nbsp; &nbsp; this.name = name;<br /> &nbsp; &nbsp; &nbsp; &nbsp; this.age = age;<br /> &nbsp; &nbsp; }</p> <p>&nbsp; &nbsp; public Long getId() {<br /> &nbsp; &nbsp; &nbsp; &nbsp; return id;<br /> &nbsp; &nbsp; }</p> <p>&nbsp; &nbsp; public void setId(Long id) {<br /> &nbsp; &nbsp; &nbsp; &nbsp; this.id = id;<br /> &nbsp; &nbsp; }</p> <p>&nbsp; &nbsp; public String getName() {<br /> &nbsp; &nbsp; &nbsp; &nbsp; return name;<br /> &nbsp; &nbsp; }</p> <p>&nbsp; &nbsp; public void setName(String name) {<br /> &nbsp; &nbsp; &nbsp; &nbsp; this.name = name;<br /> &nbsp; &nbsp; }</p> <p>&nbsp; &nbsp; public Integer getAge() {<br /> &nbsp; &nbsp; &nbsp; &nbsp; return age;<br /> &nbsp; &nbsp; }</p> <p>&nbsp; &nbsp; public void setAge(Integer age) {<br /> &nbsp; &nbsp; &nbsp; &nbsp; this.age = age;<br /> &nbsp; &nbsp; }</p> <p>&nbsp; &nbsp; @Override<br /> &nbsp; &nbsp; public String toString() {<br /> &nbsp; &nbsp; &nbsp; &nbsp; return &quot;UserDto{&quot; +<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;id=&quot; + id +<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;, name=&#39;&quot; + name + &#39;\\&#39;&#39; +<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;, age=&quot; + age +<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#39;}&#39;;<br /> &nbsp; &nbsp; }<br /> }</p> <p>&nbsp;</p> <p>原文链接:</p> <p>&nbsp;</p> <p>https://dirask.com/posts/Java-how-to-write-java-object-to-CSV-file-using-Jackson-CSV-library-8pVk0j</p> <p>&nbsp;</p>

评论 (0)

加载评论中…