oleh Vincy. Terakhir diubah pada 17 Maret 2023.
Format JSON adalah format yang banyak digunakan saat bekerja dengan pengembangan API. Sebagian besar respons API yang ada dalam format JSON.
Mengonversi konten CSV menjadi format JSON sangatlah mudah di PHP. Pada artikel ini, kita akan melihat berbagai metode untuk mencapai pertobatan ini.
Contoh cepat
<?php
$csvFileContent= file_get_contents("animals.csv");
// Converts the CSV file content into line array
$csvLineArray = explode("n", $csvFileContent);
// Forms row results in an array format
$result = array_map("str_getcsv", $csvLineArray);
$jsonObject = json_encode($result);
print_r($jsonObject);
?>
Contoh cepat di atas dalam PHP mengubah konten file CSV menjadi JSON dengan beberapa baris kode.
- Pertama, ia membaca konten file .csv menggunakan fungsi file_get_contents() PHP.
- Ini meledakkan baris CSV dengan urutan escape baris baru (n).
- Kemudian, ia mengulangi larik baris dan membaca data baris dari baris CSV.
- Terakhir, larik baris CSV yang dihasilkan diubah menjadi JSON menggunakan fungsi json_encode() .
Pada langkah 3, iterasi terjadi dengan satu baris kode. Baris ini memetakan array untuk memanggil PHP str_getcsv
untuk mem-parsing dan mengonversi baris CSV menjadi array.
Saat kami melihat metode membaca file CSV, kami membuat contoh menggunakan str_getcsv
fungsi.
File input di bawah ini disimpan dan digunakan untuk contoh PHP ini.
Masukkan CSV
Id,Name,Type,Role
1,Lion,Wild,"Lazy Boss"
2,Tiger,Wild,CEO
3,Jaguar,Wild,Developer
Keluaran JSON
Contoh cepat PHP ini menampilkan output JSON di bawah pada browser.
[["Id","Name","Type","Role"],["1","Lion","Wild","Lazy Boss"],["2","Tiger","Wild","CEO"],["3","Jaguar","Wild","Developer"]]
Di bagian berikut, kita akan melihat dua contoh lagi untuk mengonversi file CSV menjadi JSON.
- Metode 2: Konversikan CSV (berisi tajuk) menjadi JSON (mengasosiasikan pasangan kolom=>nilai)
- Metode 3: Unggah file CSV dan ubah menjadi JSON
Metode 2: Konversikan CSV (berisi tajuk) menjadi JSON (mengasosiasikan pasangan kolom=>nilai)
Contoh ini menggunakan string CSV sebagai inputnya, bukan file.
Itu membuat larik kolom tajuk dengan mendapatkan baris pertama file CSV.
Kemudian, kode mengulangi baris CSV dari baris kedua dan seterusnya. Pada setiap iterasi, ini mengaitkan kolom header dan kolom data yang diulang.
Loop ini menyiapkan array asosiatif yang berisi data CSV.
Pada langkah terakhir, fungsi json_encode() mengonversi larik asosiatif dan menulisnya menjadi file keluaran JSON.
<?php
$csvString = "Id,Name,Type,Role
1,Lion,Wild,Boss
2,Tiger,Wild,CEO
3,Jaguar,Wild,Developer";
$lineContent = array_map("str_getcsv", explode("n", $csvString));
$headers = $lineContent[0];
$jsonArray = array();
$rowCount = count($lineContent);
for ($i=1;$i<$rowCount;$i++) {
foreach ($lineContent[$i] as $key => $column) {
$jsonArray[$i][$headers[$key]] = $column;
}
}
header('Content-type: application/json; charset=UTF-8');
$fp = fopen('animals.json', 'w');
fwrite($fp, json_encode($jsonArray, JSON_PRETTY_PRINT));
fclose($fp);
?>
Keluaran – File animal.json
Ini adalah output yang ditulis ke file animal.json melalui program PHP ini.
{
"1": {
"Id": "1",
"Name": "Lion",
"Type": "Wild",
"Role": "Boss"
},
"2": {
"Id": "2",
"Name": "Tiger",
"Type": "Wild",
"Role": "CEO"
},
"3": {
"Id": "3",
"Name": "Jaguar",
"Type": "Wild",
"Role": "Developer"
}
}
Metode 3: Unggah file CSV dan ubah menjadi JSON
Alih-alih menggunakan input CSV tetap yang ditetapkan untuk suatu program, kode ini memungkinkan pengguna untuk memilih file CSV.
Kode ini menunjukkan formulir HTML dengan input file untuk mengunggah file CSV input.
Setelah diunggah, skrip PHP akan membaca konten file CSV, menyiapkan larik, dan membentuk keluaran JSON.
Dalam tutorial sebelumnya, kita telah melihat cara mengonversi CSV menjadi array PHP.
unggah-dan-konversi-csv-ke-json.php
<?php
if (isset($_POST["convert"])) {
if ($_FILES['csv_file_input']['name']) {
if ($_FILES['csv_file_input']["type"] == 'text/csv') {
$jsonOutput = array();
$csvFileContent = file_get_contents($_FILES['csv_file_input']['tmp_name']);
$result = array_map("str_getcsv", explode("n", $csvFileContent));
$header = $result[0];
$recordCount = count($result);
for ($i = 1; $i < $recordCount; $i++) {
// Associates the data with the string index in the header array
$data = array_combine($header, $result[$i]);
$jsonOutput[$i] = $data;
}
header('Content-disposition: attachment; filename=output.json');
header('Content-type: application/json');
echo json_encode($jsonOutput);
exit();
} else {
$error="Invalid CSV uploaded";
}
} else {
$error="Invalid CSV uploaded";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Convert CSV to JSON</title>
<style>
body {
font-family: arial;
}
input[type="file"] {
padding: 5px 10px;
margin: 30px 0px;
border: #666 1px solid;
border-radius: 3px;
}
input[type="submit"] {
padding: 8px 20px;
border: #232323 1px solid;
border-radius: 3px;
background: #232323;
color: #FFF;
}
.validation-message {
color: #e20900;
}
</style>
</head>
<body>
<form name="frmUpload" method="post" enctype="multipart/form-data">
<input type="file" name="csv_file_input" accept=".csv" />
<input type="submit" name="convert" value="Convert">
<?php
if (!empty($error))
{
?>
<span class="validation-message"><?php echo $error; ?></span>
<?php
}
?>
</form>
</body>
</html>
Keluaran:
Program ini menulis output JSON ke dalam file dan mendownloadnya secara otomatis ke browser.
Catatan: Kedua metode 2 dan 3 membutuhkan input CSV dengan baris kolom header untuk mendapatkan hasil yang baik.
Unduh
↑ Kembali ke Atas
Source link