การแปลงบันทึก JSON เป็นรูปแบบ CSV เป็นความต้องการที่พบบ่อยสำหรับการรายงานและการแลกเปลี่ยนข้อมูลในแอปพลิเคชัน PHP สมัยใหม่. Aspose.BarCode Cloud SDK for PHP ให้ API ที่มีประสิทธิภาพสำหรับการสร้างภาพบาร์โค้ดและการจัดการการแปลงไฟล์โดยตรงจากเซิร์ฟเวอร์ของคุณ. ในบทเรียนนี้คุณจะเห็นตัวอย่างโค้ดการแปลง JSON เป็น CSV อย่างสมบูรณ์ใน PHP ที่ยังฝังภาพบาร์โค้ดสำหรับแต่ละบันทึก. เราจะเดินผ่านการตั้งค่า การดำเนินการทีละขั้นตอน ตัวเลือก cURL และแนวปฏิบัติที่ดีที่สุดด้านประสิทธิภาพ.

วิธีแปลงข้อมูล JSON เป็น CSV ใน PHP - ขั้นตอนโดยละเอียด

  1. ติดตั้ง SDK ผ่าน Composer: ใช้แพ็กเกจ Composer อย่างเป็นทางการเพื่อเพิ่มไลบรารีลงในโครงการของคุณ.
composer require aspose-barcode-cloud
  1. กำหนดค่า API credentials และสร้างอินสแตนซ์ BarCodeApi: แทนที่ YOUR_APP_SID และ YOUR_APP_KEY ด้วยข้อมูลรับรองคลาวด์ของคุณ.
use Aspose\BarCode\Cloud\Configuration;
use Aspose\BarCode\Cloud\BarCodeApi;

$appSid = 'YOUR_APP_SID';
$appKey = 'YOUR_APP_KEY';
$config = new Configuration($appSid, $appKey);
$apiInstance = new BarCodeApi($config);

อ้างอิง: BarCodeApi class. 3. เปิดไฟล์ JSON ต้นทางและไฟล์ CSV ปลายทาง: สคริปต์ทำงานกับสตรีมไฟล์เพื่อรักษาการใช้หน่วยความจำให้ต่ำ.

$inputHandle  = fopen($inputJsonPath, 'rb');
$outputHandle = fopen($outputCsvPath, 'wb');
  1. วนลูปผ่านบันทึก JSON, สร้างบาร์โค้ด, และเขียนแถว CSV: ฟิลด์ id ของแต่ละบันทึกจะถูกแปลงเป็นภาพบาร์โค้ด, เข้ารหัสเป็น base64, และเพิ่มลงใน CSV.
while (($line = fgets($inputHandle)) !== false) {
    $record = json_decode(trim($line), true);
    $barcodeValue = $record['id'] ?? '';
    $barcodeRequest = new GenerateBarcodeRequest([
        'type'   => $barcodeFormat,
        'text'   => (string)$barcodeValue,
        'format' => 'PNG',
        'resolutionX' => 300,
        'resolutionY' => 300
    ]);
    $barcodeResponse = $apiInstance->generateBarcode($barcodeRequest);
    $record['barcode_image'] = base64_encode($barcodeResponse);
    // Write header once, then rows
    // ...
}
  1. ทำความสะอาดไฟล์ชั่วคราวและปิดสตรีม: โฟลเดอร์ชั่วคราวจะถูกลบหลังจากการประมวลผล.
fclose($inputHandle);
fclose($outputHandle);
array_map('unlink', glob($barcodeTempDir . '/*.png'));
rmdir($barcodeTempDir);

การสร้างผลลัพธ์ CSV จาก JSON ใน PHP - ตัวอย่างโค้ดเต็ม

ตัวอย่างต่อไปนี้แสดงการดำเนินการเต็มรูปแบบของการอ่านไฟล์ JSON, การสร้างภาพบาร์โค้ด, และการเขียนข้อมูลลงในไฟล์ CSV โดยใช้ Aspose.BarCode Cloud SDK for PHP.

<?php
declare(strict_types=1);

// Autoload Composer dependencies (Aspose.BarCode Cloud SDK)
require __DIR__ . '/vendor/autoload.php';

use Aspose\BarCode\Cloud\Configuration;
use Aspose\BarCode\Cloud\BarCodeApi;
use Aspose\BarCode\Cloud\Model\GenerateBarcodeRequest;

// -------------------- Configuration --------------------
$appSid = 'YOUR_APP_SID';
$appKey = 'YOUR_APP_KEY';
$config = new Configuration($appSid, $appKey);
$apiInstance = new BarCodeApi($config);

// -------------------- Settings --------------------
$inputJsonPath   = __DIR__ . '/data/input.json';   // JSON source (one object per line)
$outputCsvPath   = __DIR__ . '/data/output.csv';   // Resulting CSV
$delimiter       = ';';                           // Custom CSV delimiter
$encoding        = 'UTF-8';                       // Target CSV encoding
$barcodeFormat   = 'Code128';                     // Barcode symbology
$barcodeField    = 'id';                          // JSON field to turn into barcode
$barcodeTempDir  = __DIR__ . '/temp_barcodes';    // Temporary folder for barcode images

// Ensure temporary directory exists
if (!is_dir($barcodeTempDir)) {
    mkdir($barcodeTempDir, 0777, true);
}

// -------------------- Open Files --------------------
$inputHandle  = fopen($inputJsonPath, 'rb');
if ($inputHandle === false) {
    throw new RuntimeException("Unable to open input JSON file.");
}
$outputHandle = fopen($outputCsvPath, 'wb');
if ($outputHandle === false) {
    fclose($inputHandle);
    throw new RuntimeException("Unable to open output CSV file.");
}

// Write UTF-8 BOM for Excel compatibility
fwrite($outputHandle, "\xEF\xBB\xBF");

// -------------------- Process JSON --------------------
$headerWritten = false;
while (($line = fgets($inputHandle)) !== false) {
    $line = trim($line);
    if ($line === '' || $line === '[' || $line === ']') {
        continue; // skip empty lines or array brackets
    }
    // Remove trailing commas if present (common in pretty‑printed arrays)
    $line = rtrim($line, ',');
    $record = json_decode($line, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        continue; // skip malformed lines
    }

// Generate barcode image for the selected field
    $barcodeValue = $record[$barcodeField] ?? '';
    $barcodeRequest = new GenerateBarcodeRequest([
        'type' => $barcodeFormat,
        'text' => (string)$barcodeValue,
        'format' => 'PNG',
        'resolutionX' => 300,
        'resolutionY' => 300
    ]);
    try {
        $barcodeResponse = $apiInstance->generateBarcode($barcodeRequest);
        $barcodeFilePath = $barcodeTempDir . '/' . uniqid('barcode_', true) . '.png';
        file_put_contents($barcodeFilePath, $barcodeResponse);
        // Store relative path (or base64) in CSV; here we use base64 to keep CSV self‑contained
        $barcodeBase64 = base64_encode($barcodeResponse);
        $record['barcode_image'] = $barcodeBase64;
    } catch (Exception $e) {
        $record['barcode_image'] = '';
    }

// Prepare CSV row with proper UTF‑8 encoding
    $csvRow = [];
    foreach ($record as $value) {
        if (is_array($value) || is_object($value)) {
            $value = json_encode($value, JSON_UNESCAPED_UNICODE);
        }
        $csvRow[] = mb_convert_encoding((string)$value, $encoding, 'UTF-8');
    }

// Write header once
    if (!$headerWritten) {
        $header = array_keys($record);
        fputcsv($outputHandle, $header, $delimiter);
        $headerWritten = true;
    }

// Write data row
    fputcsv($outputHandle, $csvRow, $delimiter);
}

// -------------------- Cleanup --------------------
fclose($inputHandle);
fclose($outputHandle);

// Optionally delete temporary barcode files
array_map('unlink', glob($barcodeTempDir . '/*.png'));
rmdir($barcodeTempDir);

หมายเหตุ: ตัวอย่างโค้ดนี้แสดงการทำงานหลัก ก่อนนำไปใช้ในโครงการของคุณ ให้ตรวจสอบให้แน่ใจว่าได้อัปเดตเส้นทางไฟล์ (input.json, output.csv, เป็นต้น) ให้ตรงกับตำแหน่งไฟล์จริงของคุณ ตรวจสอบว่าการพึ่งพาทั้งหมดที่จำเป็นได้ถูกติดตั้งอย่างถูกต้อง และทำการทดสอบอย่างละเอียดในสภาพแวดล้อมการพัฒนาของคุณ หากคุณพบปัญหาใด ๆ โปรดดูที่ เอกสารอย่างเป็นทางการ หรือ ติดต่อกับ ทีมสนับสนุน เพื่อขอความช่วยเหลือ

สร้าง CSV ผ่าน REST API จาก JSON ด้วย cURL

คุณสามารถบรรลุผลลัพธ์เดียวกันโดยไม่ต้องเขียนโค้ด PHP โดยการเรียกใช้ REST endpoint ของ Aspose.BarCode Cloud โดยตรง กระบวนการทำงานประกอบด้วยการอัปโหลดไฟล์ JSON การสร้างบาร์โค้ดสำหรับแต่ละบันทึก และการดาวน์โหลดไฟล์ CSV สุดท้าย

  1. รับโทเค็นการเข้าถึง (แทนที่ตัวแปรตำแหน่งด้วยข้อมูลประจำตัวของคุณ).
curl -X POST "https://api.aspose.cloud/connect/token" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"

การตอบสนองจะมี access_token.

  1. อัปโหลดไฟล์ JSON ต้นฉบับ.
curl -X PUT "https://api.aspose.cloud/v3.0/barcode/storage/file/input.json" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     --data-binary @data/input.json
  1. สร้างบาร์โค้ดสำหรับบันทึกเดียว (ทำซ้ำสำหรับแต่ละบันทึกในสคริปต์).
curl -X POST "https://api.aspose.cloud/v3.0/barcode/generate" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "type":"Code128",
           "text":"12345",
           "format":"PNG",
           "resolutionX":300,
           "resolutionY":300
         }' \
     -o temp/barcode_12345.png
  1. ประกอบไฟล์ CSV (คุณสามารถใช้สคริปต์ง่าย ๆ ที่อ่าน JSON ที่อัปโหลด, แทรกบาร์โค้ดที่เข้ารหัสเป็น base64, และเขียนไฟล์ CSV).
    ขั้นตอนการประกอบทำงานในเครื่องท้องถิ่น; API ไม่ได้ให้ endpoint ที่แปลง JSON‑to‑CSV โดยตรง.

  2. ดาวน์โหลด CSV ที่ได้.

curl -X GET "https://api.aspose.cloud/v3.0/barcode/storage/file/output.csv" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o data/output.csv

สำหรับรายการพารามิเตอร์ทั้งหมด โปรดดูที่ เอกสาร API อย่างเป็นทางการ.

เตรียมสภาพแวดล้อมให้พร้อม

เพื่อเริ่มเขียนโค้ด คุณต้องมี PHP runtime (7.4 หรือใหม่กว่า) และบัญชี Aspose.BarCode Cloud ที่ถูกต้อง

composer require aspose-barcode-cloud

ดาวน์โหลดแพ็กเกจ SDK จากหน้าปล่อยอย่างเป็นทางการ: Aspose.BarCode Cloud SDK for PHP Download. หลังจากการติดตั้ง ให้สร้างไฟล์ config.php พร้อมกับ APP_SID และ APP_KEY ของคุณ.

ปรับประสิทธิภาพการประมวลผล JSON ขนาดใหญ่

  1. สตรีมไฟล์ JSON - อ่านทีละบรรทัดแทนการโหลดไฟล์ทั้งหมดเข้าสู่หน่วยความจำ.
  2. ใช้ตัวอย่าง BarCodeApi ซ้ำ - การสร้างไคลเอนต์ใหม่สำหรับแต่ละบันทึกทำให้เกิดภาระเพิ่มขึ้น.
  3. จำกัดความละเอียดของบาร์โค้ด - 300 dpi เพียงพอสำหรับรายงานส่วนใหญ่; ค่าที่ต่ำกว่าจะลดขนาดข้อมูลที่ส่ง.
  4. เขียนแถว CSV เป็นชุด - เก็บบัฟเฟอร์หลายแถวก่อนเรียก fputcsv เพื่อให้การอ่าน/เขียนดิสก์ลดลง.

เคล็ดลับปฏิบัติสำหรับการแปลง JSON เป็น CSV อย่างมีประสิทธิภาพ

  • ใช้เครื่องหมายเซมิโคลอน (;) หรือแท็บ (\t) เป็นตัวคั่นเมื่อข้อมูลของคุณอาจมีเครื่องหมายจุลภาค.
  • เข้ารหัสอักขระที่ไม่ใช่ ASCII ด้วย UTF‑8 และเพิ่ม BOM (\xEF\xBB\xBF) ไว้ข้างหน้าเพื่อความเข้ากันได้กับ Excel.
  • เก็บภาพบาร์โค้ดเป็นสตริง Base64 ภายในไฟล์ CSV เพื่อให้ไฟล์เป็นอิสระ.
  • ทำความสะอาดโฟลเดอร์บาร์โค้ดชั่วคราวหลังจากการรันแต่ละครั้งเพื่อหลีกเลี่ยงความรกของดิสก์.
  • ตรวจสอบความถูกต้องของบรรทัด JSON ด้วย json_last_error() เพื่อข้ามบันทึกที่ผิดรูปแบบอย่างราบรื่น.

สรุป

คู่มือนี้ได้พาคุณผ่านตัวอย่างโค้ดการแปลง JSON เป็น CSV อย่างครบถ้วนใน PHP โดยใช้ Aspose.BarCode Cloud SDK for PHP. คุณได้เรียนรู้วิธีการกำหนดค่า SDK, สร้างบาร์โค้ดสำหรับแต่ละระเบียน, จัดการตัวคั่นที่กำหนดเองและการเข้ารหัส UTF‑8, และใช้การปรับประสิทธิภาพสำหรับชุดข้อมูลขนาดใหญ่. SDK นี้เป็นผลิตภัณฑ์เชิงพาณิชย์; คุณสามารถซื้อใบอนุญาตสำหรับการใช้งานในสภาพแวดล้อมการผลิตหรือรับใบอนุญาตชั่วคราวจากหน้า temporary license page เพื่อประเมินไลบรารี. เริ่มผสานรวมโค้ดวันนี้และทำให้กระบวนการแลกเปลี่ยนข้อมูลของคุณเป็นระเบียบและมีประสิทธิภาพ.

FAQs

Q: โค้ดตัวอย่างการแปลง JSON เป็น CSV ใน PHP จัดการกับอ็อบเจ็กต์ที่ซ้อนกันอย่างไร?
A: อาร์เรย์หรืออ็อบเจ็กต์ที่ซ้อนกันจะถูกแปลงเป็นสตริง JSON ด้วย json_encode ก่อนที่จะเขียนลงใน CSV เพื่อให้ CSV มีโครงสร้างแบนและยังคงรักษาข้อมูลต้นฉบับไว้ สำหรับรายละเอียดเพิ่มเติม โปรดดูเอกสาร Aspose.BarCode Cloud SDK for PHP documentation.

Q: ฉันสามารถเปลี่ยนตัวคั่น CSV ในสคริปต์ JSON เป็น CSV ใน PHP ได้หรือไม่?
A: ได้, แก้ไขตัวแปร $delimiter ที่ส่วนบนของสคริปต์ (เช่น ตั้งค่าเป็น ',' สำหรับไฟล์ที่คั่นด้วยเครื่องหมายจุลภาค). สคริปต์จะเคารพตัวคั่นที่เป็นอักขระเดียวที่คุณระบุ.

Q: มีวิธีใดบ้างที่จะประมวลผลบันทึก JSON จำนวนหลายพันรายการอย่างมีประสิทธิภาพ?
A: แน่นอน. ส่วนประสิทธิภาพของบทเรียนแนะนำให้สตรีมไฟล์อินพุต, ใช้คลไคลเอนต์ API ซ้ำ, และเขียนแถวเป็นชุด. เทคนิคเหล่านี้ช่วยลดการใช้หน่วยความจำและเร่งความเร็วการประมวลผลไฟล์ JSON ขนาดใหญ่.

Q: ยูทิลิตี้ JSON ไป CSV ใน PHP รองรับรูปแบบบาร์โค้ดอื่นหรือไม่?
A: ตัวแปร $barcodeFormat สามารถตั้งค่าเป็นสัญลักษณ์ใดก็ได้ที่รองรับโดย Aspose.BarCode เช่น QR, DataMatrix หรือ Code39 เพียงอัปเดตค่าก่อนรันสคริปต์.

อ่านเพิ่มเติม