Konversikan PHP CSV ke JSON

0
(0)

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.

  1. Pertama, ia membaca konten file .csv menggunakan fungsi file_get_contents() PHP.
  2. Ini meledakkan baris CSV dengan urutan escape baris baru (n).
  3. Kemudian, ia mengulangi larik baris dan membaca data baris dari baris CSV.
  4. 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.

  1. Metode 2: Konversikan CSV (berisi tajuk) menjadi JSON (mengasosiasikan pasangan kolom=>nilai)
  2. Metode 3: Unggah file CSV dan ubah menjadi JSON

unggah dan konversi csv ke 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.
keluaran file json
Unduh

↑ Kembali ke Atas


Source link

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.