Η μετατροπή των εγγραφών JSON σε μορφή CSV είναι συχνή απαίτηση για αναφορές και ανταλλαγή δεδομένων σε σύγχρονες εφαρμογές PHP. Το Aspose.BarCode Cloud SDK for PHP παρέχει ισχυρό API για τη δημιουργία εικόνων barcode και τη διαχείριση μετασχηματισμών αρχείων απευθείας από τον διακομιστή σας. Σε αυτό το tutorial θα δείτε ένα πλήρες παράδειγμα κώδικα JSON προς CSV σε PHP που επίσης ενσωματώνει εικόνες barcode για κάθε εγγραφή. Θα περάσουμε από τη ρύθμιση, την υλοποίηση step‑by‑step, μια εναλλακτική cURL και τις βέλτιστες πρακτικές απόδοσης.

Πώς να Μετατρέψετε Δεδομένα JSON σε CSV σε PHP - Βήμα προς Βήμα

  1. Εγκαταστήστε το SDK μέσω Composer: Χρησιμοποιήστε το επίσημο πακέτο Composer για να προσθέσετε τη βιβλιοθήκη στο έργο σας.
composer require aspose-barcode-cloud
  1. Διαμορφώστε τα διαπιστευτήρια API και δημιουργήστε το αντικείμενο BarCodeApi: Αντικαταστήστε το YOUR_APP_SID και το YOUR_APP_KEY με τα διαπιστευτήρια του cloud σας.
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 προορισμού: Το script λειτουργεί με ροές αρχείων για να διατηρεί τη χρήση μνήμης χαμηλή.

$inputHandle  = fopen($inputJsonPath, 'rb');
$outputHandle = fopen($outputCsvPath, 'wb');
  1. Διατρέξτε τις εγγραφές JSON, δημιουργήστε barcodes και γράψτε γραμμές CSV: Το πεδίο id κάθε εγγραφής μετατρέπεται σε εικόνα barcode, κωδικοποιείται σε 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, της δημιουργίας εικόνων barcode και της εγγραφής των δεδομένων σε αρχείο 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 endpoints του Aspose.BarCode Cloud. Η ροή εργασίας αποτελείται από τη μεταφόρτωση του αρχείου JSON, τη δημιουργία barcode για κάθε εγγραφή και τη λήψη του τελικού 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. Δημιουργήστε ένα barcode για μία εγγραφή (επαναλάβετε για κάθε εγγραφή σε ένα script).
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 (μπορείτε να χρησιμοποιήσετε ένα απλό script που διαβάζει το ανεβασμένο JSON, εισάγει το barcode κωδικοποιημένο σε base64 και γράφει το CSV).
    Το βήμα συναρμολόγησης εκτελείται τοπικά· το API δεν παρέχει άμεσο JSON‑to‑CSV endpoint.

  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.

Προετοιμασία του Περιβάλλοντος

Για να ξεκινήσετε τον κώδικα, χρειάζεστε ένα runtime PHP (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. Περιορίστε την ανάλυση του barcode - 300 dpi είναι επαρκής για τις περισσότερες αναφορές· χαμηλότερες τιμές μειώνουν το μέγεθος του payload.
  4. Γράψτε τις γραμμές CSV σε παρτίδες - αποθηκεύστε σε buffer μερικές γραμμές πριν καλέσετε τη fputcsv για να ελαχιστοποιήσετε τις εγγραφές στο δίσκο.

Πρακτικές Συμβουλές για Αποδοτική Μετατροπή JSON σε CSV

  • Χρησιμοποιήστε άνω τελεία (;) ή καρτέλα (\t) ως διαχωριστικό όταν τα δεδομένα σας μπορεί να περιέχουν κόμματα.
  • Κωδικοποιήστε χαρακτήρες μη‑ASCII με UTF‑8 και προσθέστε ένα BOM (\xEF\xBB\xBF) για συμβατότητα με το Excel.
  • Αποθηκεύστε τις εικόνες barcode ως συμβολοσειρές Base64 μέσα στο CSV για να διατηρήσετε το αρχείο αυτό‑συμπαγές.
  • Καθαρίστε το προσωρινό φάκελο barcode μετά από κάθε εκτέλεση για να αποφύγετε την ακαταστασία του δίσκου.
  • Επαληθεύστε τις γραμμές JSON με json_last_error() για να παραλείψετε κατεστραμμένες εγγραφές με χάρη.

Συμπέρασμα

Αυτός ο οδηγός σας καθοδήγησε μέσα από ένα πλήρες παράδειγμα κώδικα JSON σε CSV σε PHP χρησιμοποιώντας το Aspose.BarCode Cloud SDK for PHP. Μάθατε πώς να διαμορφώσετε το SDK, να δημιουργήσετε γραμμωτούς κώδικες για κάθε εγγραφή, να διαχειριστείτε προσαρμοσμένους οριοθέτες και την κωδικοποίηση UTF‑8, και να εφαρμόσετε βελτιστοποιήσεις απόδοσης για μεγάλα σύνολα δεδομένων. Το SDK είναι εμπορικό προϊόν· μπορείτε να αγοράσετε άδεια για παραγωγική χρήση ή να αποκτήσετε προσωρινή άδεια από τη σελίδα προσωρινής άδειας για να αξιολογήσετε τη βιβλιοθήκη. Ξεκινήστε να ενσωματώνετε τον κώδικα σήμερα και βελτιώστε τις διαδικασίες ανταλλαγής δεδομένων σας.

Συχνές ερωτήσεις

Q: Πώς το παράδειγμα κώδικα JSON σε CSV σε PHP διαχειρίζεται τα ένθετα αντικείμενα;
A: Οι ένθετοι πίνακες ή αντικείμενα μετατρέπονται σε συμβολοσειρά JSON χρησιμοποιώντας json_encode πριν γραφτούν στο CSV, εξασφαλίζοντας ότι το CSV παραμένει επίπεδο ενώ διατηρεί τα αρχικά δεδομένα. Για περισσότερες λεπτομέρειες, δείτε την Aspose.BarCode Cloud SDK for PHP τεκμηρίωση.

Q: Μπορώ να αλλάξω το διαχωριστικό CSV στο script JSON σε CSV σε PHP;
A: Ναι, τροποποιήστε τη μεταβλητή $delimiter στην αρχή του script (π.χ., ορίστε την σε ',' για αρχείο διαχωρισμένο με κόμμα). Το script σέβεται οποιοδήποτε μονο‑χαρακτήρα διαχωριστικό που παρέχετε.

Q: Υπάρχει τρόπος να επεξεργαστείτε χιλιάδες εγγραφές JSON αποδοτικά;
A: Σίγουρα. Η ενότητα απόδοσης του σεμιναρίου συνιστά τη ροή (streaming) του αρχείου εισόδου, την επαναχρησιμοποίηση του πελάτη API και τη γραφή των γραμμών σε παρτίδες. Αυτές οι τεχνικές μειώνουν τη χρήση μνήμης και επιταχύνουν την επεξεργασία μεγάλων αρχείων JSON.

Q: Υποστηρίζει η βοηθητική λειτουργία JSON σε CSV σε PHP άλλες μορφές barcode;
A: Η μεταβλητή $barcodeFormat μπορεί να οριστεί σε οποιαδήποτε συμβολική γραφή που υποστηρίζεται από Aspose.BarCode, όπως QR, DataMatrix ή Code39. Απλώς ενημερώστε την τιμή πριν εκτελέσετε το script.

Read More