Merubah JSON menjadi CSV menggunakan Java
10 minute read
misalkan kita punya file JSON seperti dibawah ini kita akan mengubahnya menjadi file CSV agar bisa di export ke aplikasi Spreadsheet seperti Excel.
# filename: students.json
{
"students" : [{
"id_card" : "2019110024",
"name" : "Muhammat Rizki Saputra",
"major" : "Teknik Informatika",
"hobbies" : ["coding", "sport"]
}, {
"id_card" : "2019110025",
"name" : "Muhammat Sarif",
"major" : "Teknik Informatika",
"hobbies" : ["coding", "sport", "music"]
}, {
"id_card" : "2019110026",
"name" : "Muhammat Alamsyah",
"major" : "Teknik Informatika",
"hobbies" : ["coding"]
}, {
"id_card" : "2019110027",
"name" : "Muhammat Alim",
"major" : "Teknik Informatika",
"hobbies" : ["aventure"]
}, {
"id_card" : "2019110028",
"name" : "Muhammat Rafly Al ajid",
"major" : "Teknik Informatika",
"hobbies" : ["sport"]
}]
}
Sebelumnya silahkan buat projek terlebih dahulu dan tambahkan 2 library dibawah ini kedalam depedency di pom.xml
jackson-databind ini adalah library yang kita gunakan untuk membuat JSON dari objek java dan juga untuk membaca JSON menjadi objek java
commons-csv ini adalah library yang kita gunakan untuk membuat csv dan juga untuk membaca file csv
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.3</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.10.0</version>
</dependency>
Merubah JSON menjadi file CSV
saya asumsikan anda sudah mengerti cara membaca objek json menjadi objek java
@Data
@NoArgsConstructor
@AllArgsConstructor
public class StudentsResponse {
@JsonProperty("students")
private List<Students> students;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
class Students {
@JsonProperty("id_card")
private String idCard;
@JsonProperty("name")
private String name;
@JsonProperty("major")
private String major;
@JsonProperty("hobbies")
private List<String> hobbies;
}
@Test
void createCSVfromJSON() {
try {
// instance objek mapper dari library jackson
ObjectMapper mapper = new ObjectMapper();
// mengubah objek json menjadi objek java
StudentsResponse response = mapper.reader()
.forType(StudentsResponse.class)
.readValue(Files.newBufferedReader(Path.of("students.json")));
// menentukan tempat file csv yang akan ditulis
BufferedWriter bufferWiriter = Files.newBufferedWriter(Path.of("students.csv"));
// menentukan format csv dan header
CSVFormat csvFormat = CSVFormat.DEFAULT.builder()
.build();
// membuat file csv
CSVPrinter csvPrinter = new CSVPrinter(bufferWiriter, csvFormat);
List<Students> students = response.getStudents();
for (var student : students) {
csvPrinter.printRecord(
student.getIdCard(),
student.getName(),
student.getMajor(),
student.getHobbies()
);
}
csvPrinter.flush();
bufferWiriter.close();
} catch (IOException error) {
System.out.println(error.getMessage());
}
}
di file students.csv hasilnya akan terlihat seperti dibawah ini
2019110024,Muhammat Rizki Saputra,Teknik Informatika,"[coding, sport]"
2019110025,Muhammat Sarif,Teknik Informatika,"[coding, sport, music]"
2019110026,Muhammat Alamsyah,Teknik Informatika,[coding]
2019110027,Muhammat Alim,Teknik Informatika,[aventure]
2019110028,Muhammat Rafly Al ajid,Teknik Informatika,[sport]
Posting Komentar