Languages
[Edit]
PL

Java - jak zapisać obiekt java do pliku CSV za pomocą biblioteki Jackson CSV

0 points
Created by:
Dirask Community
6810

1. Przegląd

W tym poście będziemy zapisywać obiekt java do pliku CSV za pomocą procesora Jackson CSV.

Aby użyć biblioteki Jackson CSV, musimy dodać właściwość (property) jackson-dataformat-csv do pom.xml.

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-csv</artifactId>
    <version>2.9.9</version>
</dependency>

2. Zapisywanie obiektu java do pliku CSV

Poniżej mamy 2 klasy musimy zapisać prostą klasę java UserDto do pliku CSV.
Upewnij się, że ustawiłeś poprawną ścieżkę i nazwę pliku jako dane wyjściowe.

Aby uruchomić ten przykład, skopiuj do swojego projektu te 2 pliki:

  1. UserCsvWriter
  2. UserDto

2.1 Logika

Logika, która zapisuje obiekt UserDto java pojo do pliku CSV z biblioteką Jackson CSV.

Korzystanie z klas:

  • CsvMapper + CsvSchema z biblioteki jackson CSV
  • ObjectWriter z biblioteki jackson databind
  • JsonGenerator z rdzenia Jacksona
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);
    }
}

Wynik:

Users saved to csv file under path:
C:\csv_tests\user_output.csv

2.2 Obiekt Pojo użytkownika - UserDto

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 +
                '}';
    }
}

Referencje

  1. jackson-dataformat-csv - maven
  2. Comma-separated values (CSV) - wiki
  3. CsvMapper - JavaDoc
  4. CsvSchema - JavaDoc
  5. ObjectWriter - JavaDoc
  6. JsonGenerator - JavaDoc
Native Advertising
🚀
Get your tech brand or product in front of software developers.
For more information Contact us
Dirask - we help you to
solve coding problems.
Ask question.

❤️💻 🙂

Join