Merubah JSON menjadi CSV menggunakan Java
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