Chuyển đổi PHP JSON sang CSV – PHP

Hướng dẫn này đưa ra các ví dụ để chuyển đổi nội dung biến PHP JSON thành tệp CSV.

Ví dụ nhanh này đạt được nó trong một vài bước. Nó sử dụng phương thức PHP fputcsv() để chuẩn bị đầu ra CSV.

  1. Nó đọc JSON đầu vào và giải mã nó thành một mảng.
  2. Lặp lại mảng JSON để đọc dòng của bản ghi.
  3. Áp dụng PHP fputcsv() để viết các khóa mảng trong tiêu đề, theo sau là các giá trị mảng.

ví dụ nhanh

<?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>';

Tệp JSON đầu vào nằm trong ổ đĩa cục bộ và được chỉ định cho một biến PHP $jsonFile.

Ví dụ này tạo một hàm tùy chỉnh convertJsonToCSV(). Nó yêu cầu JSON đầu vào và tên tệp CSV đích.

Nó chuyển đổi đối tượng JSON đầu vào thành một mảng PHP. Sau đó, nó lặp lại mảng PHP để đọc hàng.

Hàm này sử dụng hàm PHP fputcsv() để ghi từng hàng vào tệp CSV đích.

Đầu ra:

Chương trình trên sẽ trả về nội dung CSV sau trong một tệp. Trong hướng dẫn trước, chúng ta đã biết cách xuất sang tệp CSV bằng cách sử dụng hàm PHP fputcsv().

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

Lưu ý: JSON đầu vào phải là một mảng kết hợp một chiều để có được đầu ra tốt hơn.

php json sang csv

Chuỗi JSON sang CSV trong PHP

Ví dụ này có một cách tiếp cận khác để xử lý chuyển đổi PHP JSON sang CSV.

Nó sử dụng một chuỗi JSON làm đầu vào thay vì đọc một tệp. Đầu vào chuỗi JSON được bắt đầu trong một biến PHP và được chuyển đến convertJSONtoCSV() chức năng.

Nó đọc chuỗi JSON và chuyển đổi nó thành một mảng JSON để chuẩn bị CSV. Bài viết được liên kết có một ví dụ về đọc CSV bằng PHP.

Sau đó, nó lặp lại mảng JSON và áp dụng PHP fputcsv() để ghi hàng CSV.

Nó đọc array_keys để cung cấp tiêu đề CSV. Và điều này sẽ chỉ được thực hiện lần đầu tiên. Nó ghi tên cột dưới dạng hàng đầu tiên của CSV đầu ra.

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>';

Tải lên tệp CSV để chuyển đổi thành JSON trong PHP

Ví dụ này là để thực hiện JSON sang CSV bằng tùy chọn tải tệp lên.

Mã này sẽ hữu ích nếu bạn muốn chuyển đổi tệp JSON đã tải lên thành CSV.

Nó hiển thị một biểu mẫu HTML với trường nhập tệp. Trường này sẽ chỉ chấp nhận các tệp ‘.json’. Hạn chế được quản lý bằng thuộc tính ‘chấp nhận’ HTML. Nó cũng có thể được xác thực bằng tập lệnh xác thực tệp phía máy chủ trong PHP.

$_FILES[‘csv-file’][‘tmp_name’] chứa nội dung tệp CSV đã đăng. Tập lệnh chuyển đổi JSON sang CSV sử dụng nội dung tệp đã tải lên.

Sau đó, nó phân tích cú pháp JSON và chuyển đổi nó thành CSV. Sau khi chuyển đổi, liên kết sẽ được hiển thị tới trình duyệt để tải xuống tệp.

upload-json-to-convert-to-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>

Tải xuống

↑ Quay lại Đầu trang


Xem thêm tin mới và bổ ích tại:

Kiến thức gia đình

Tri thức đời sống

– Kênh youtube Kiến thức gia đình