Konversikan PHP JSON ke CSV

0
(0)

oleh Vincy. Terakhir diubah pada 7 Maret 2023.

Tutorial ini memberikan contoh untuk mengonversi konten variabel JSON PHP menjadi file CSV.

Contoh cepat ini mencapainya dalam beberapa langkah. Ia menggunakan metode PHP fputcsv() untuk menyiapkan keluaran CSV.

  1. Itu membaca input JSON dan menerjemahkannya ke dalam array.
  2. Iterasi larik JSON untuk membaca baris catatan.
  3. Terapkan PHP fputcsv() untuk menulis kunci array di header, diikuti dengan nilai array.

Contoh cepat

<?php

function convertJsonToCSV($jsonFile, $csvFile)
{
    if (($json = file_get_contents($jsonFile)) == false) {
        die('Unable to read JSON file.');
    }
    $jsonString = json_decode($json, true);
    $fp = fopen($csvFile, 'w');
    fputcsv($fp, array_keys($jsonString[0]));
    for ($i = 0; $i < count($jsonString); $i ++) {
        fputcsv($fp, array_values($jsonString[$i]));
    }
    fclose($fp);
    return;
}
$jsonFile="animals.json";
$csvFile="animals.csv";

convertJsonToCSV($jsonFile, $csvFile);
echo 'JSON to CSV converted. <a href="' . $csvFile . '" target="_blank">Download CSV file</a>';

File JSON input ada di drive lokal dan ditentukan ke variabel PHP $jsonFile.

Contoh ini membuat fungsi khusus convertJsonToCSV(). Itu membutuhkan input JSON dan nama file CSV target.

Itu mengubah input objek JSON ke array PHP. Kemudian, iterasi array PHP untuk membaca baris tersebut.

Fungsi ini menggunakan fungsi PHP fputcsv() untuk menulis setiap baris ke dalam file CSV target.

Keluaran:

Program di atas akan mengembalikan konten CSV berikut dalam sebuah file. Dalam tutorial sebelumnya, kita telah melihat cara mengekspor ke file CSV menggunakan fungsi PHP fputcsv().

Id,Name,Type,Role
1,Lion,Wild,"Lazy Boss"
2,Tiger,Wild,CEO
3,Jaguar,Wild,Developer

Catatan: Masukan JSON harus berupa larik asosiatif satu dimensi untuk mendapatkan keluaran yang lebih baik.

php json ke csv

string JSON ke CSV di PHP

Contoh ini memiliki pendekatan berbeda untuk menangani konversi PHP JSON ke CSV.

Itu menggunakan string JSON sebagai inputnya alih-alih membaca file. Input string JSON dimulai dalam variabel PHP dan diteruskan ke konversiJSONkeCSV() fungsi.

Itu membaca string JSON dan mengubahnya menjadi larik JSON untuk menyiapkan CSV. Artikel tertaut memiliki contoh membaca CSV menggunakan PHP.

Kemudian, iterasi larik JSON dan menerapkan PHP fputcsv() untuk menulis baris CSV.

Bunyinya array_keys untuk memasok header CSV. Dan ini akan dieksekusi hanya untuk pertama kalinya. Itu menulis nama kolom sebagai baris pertama dari output CSV.

json-string-to-csv.php

<?php
function convertJsonToCSV($jsonString, $csvFile)
{
    $jsonArray = json_decode($jsonString, true);
    $fp = fopen($csvFile, 'w');
    $header = false;
    foreach ($jsonArray as $line) {
        if (empty($header)) {
            $header = array_keys($line);
            fputcsv($fp, $header);
            $header = array_flip($header);
        }
        fputcsv($fp, array_merge($header, $line));
    }
    fclose($fp);
    return;
}
$jsonString = '[
    {
        "Id": "1",
        "Name": "Lion",
        "Type": "Wild",
        "Role": "Lazy Boss"
    },
    {
        "Id": "2",
        "Name": "Tiger",
        "Type": "Wild",
        "Role": "CEO"
    },
    {
        "Id": "3",
        "Name": "Jaguar",
        "Type": "Wild",
        "Role": "Developer"
    }
]';
$csvFile="animals.csv";

convertJsonToCSV($jsonString, $csvFile);
echo 'JSON to CSV converted. <a href="' . $csvFile . '" target="_blank">Download CSV file</a>';

Unggah file CSV untuk diubah menjadi JSON di PHP

Contoh ini untuk melakukan JSON ke CSV dengan opsi unggah file.

Kode ini akan berguna jika Anda ingin mengubah file JSON yang diunggah menjadi CSV.

Ini menunjukkan formulir HTML dengan bidang input file. Kolom ini hanya akan menerima file ‘.json’. Pembatasan dikelola dengan atribut HTML ‘accept’. Itu juga dapat divalidasi dengan skrip validasi file sisi server di PHP.

$_FILES[‘csv-file’][‘tmp_name’] berisi konten file CSV yang diposting. Skrip konversi JSON ke CSV menggunakan konten file yang diunggah.

Kemudian, mem-parsing JSON dan mengubahnya menjadi CSV. Setelah dikonversi, tautan akan ditampilkan ke browser untuk mengunduh file.

unggah-json-ke-konversi-ke-csv.php

<?php
if (! empty($_FILES["csv-file"]["tmp_name"])) {
    $csvFile="animal.csv";
    if (($json = file_get_contents($_FILES["csv-file"]["tmp_name"])) == false) {
        die('Unable to read JSON file.');
    }
    $jsonString = json_decode($json, true);
    $fp = fopen($csvFile, 'w');
    fputcsv($fp, array_keys($jsonString[0]));
    for ($i = 0; $i < count($jsonString); $i ++) {
        fputcsv($fp, array_values($jsonString[$i]));
    }
    fclose($fp);
    echo 'JSON to CSV converted. <a href="' . $csvFile . '" target="_blank">Download CSV file</a>';
}
?>
<HTML>
<head>
<title>Convert JSON to CSV</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;
}
</style>
</head>

<body>
    <form method="post" enctype="multipart/form-data">
        <input type="file" name="csv-file" accept=".json" /> <input
            type="submit" name="upload" value="Upload">
    </form>
</body>
</HTML>

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.