JSON rekordok JSON átalakítása CSV formátumba gyakori követelmény a jelentéskészítéshez és az adatcseréhez a modern PHP alkalmazásokban. Aspose.BarCode Cloud SDK for PHP erőteljes API-t biztosít a vonalkód képek generálásához és a fájltranszformációk kezeléséhez közvetlenül a szerverről. Ebben az útmutatóban egy teljes JSON‑ről CSV‑re kódpéldát láthat PHP‑ban, amely minden rekordhoz beágyaz vonalkód képeket. Végigvezetünk a beállításon, a lépésről‑lépésre megvalósításon, egy cURL alternatíván, és a teljesítmény legjobb gyakorlataikon.

Hogyan alakítsuk át a JSON adatot CSV-re PHP-ben – Lépésről lépésre

  1. Telepítse az SDK-t a Composer segítségével: Használja a hivatalos Composer csomagot a könyvtár projektbe való hozzáadásához.
composer require aspose-barcode-cloud
  1. Állítsa be az API hitelesítő adatokat és hozza létre a BarCodeApi példányt: Cserélje le a YOUR_APP_SID és YOUR_APP_KEY értékeket a felhő hitelesítő adataira.
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);

Referencia: BarCodeApi osztály. 3. Nyissa meg a forrás JSON fájlt és a cél CSV fájlt: A szkript fájlfolyamokkal dolgozik a memóriahasználat alacsonyan tartása érdekében.

$inputHandle  = fopen($inputJsonPath, 'rb');
$outputHandle = fopen($outputCsvPath, 'wb');
  1. Iteráljon a JSON rekordokon, generáljon vonalkódokat, és írja a CSV sorokat: Minden rekord id mezőjét vonalkód képpé alakítja, base64‑kódolva, majd a CSV‑hez adja.
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. Tisztítsa meg az ideiglenes fájlokat és zárja be a folyamokat: A feldolgozás után az ideiglenes mappa eltávolításra kerül.
fclose($inputHandle);
fclose($outputHandle);
array_map('unlink', glob($barcodeTempDir . '/*.png'));
rmdir($barcodeTempDir);

CSV kimenet generálása JSON-ból PHP-ben – Teljes kódpélda

A következő példa bemutatja a JSON fájl beolvasásának, vonalkód képek létrehozásának és az adatok CSV fájlba írásának teljes megvalósítását az Aspose.BarCode Cloud SDK for PHP használatával.

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

Megjegyzés: Ez a kódrészlet bemutatja az alapvető funkciókat. Mielőtt a projektjében használná, győződjön meg arról, hogy frissíti a fájl útvonalakat (input.json, output.csv, stb.) a tényleges helyeknek megfelelően, ellenőrizze, hogy minden szükséges függőség megfelelően telepítve van, és alaposan tesztelje a fejlesztői környezetben. Ha problémákba ütközik, kérjük, tekintse meg a hivatalos dokumentációt vagy lépjen kapcsolatba a támogatási csapattal segítségért.

Creating CSV via REST API from JSON Using cURL

Ugyanazt az eredményt elérheti PHP kód írása nélkül, ha közvetlenül meghívja az Aspose.BarCode Cloud REST végpontjait. A munkafolyamat a JSON fájl feltöltéséből, minden rekordhoz egy vonalkód generálásából és a végleges CSV letöltéséből áll.

  1. Szerezzen egy hozzáférési tokent (cserélje ki a helyőrzőket a saját hitelesítő adataival).
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"

A válasz tartalmazza az access_token-t.

  1. Töltsd fel a forrás JSON fájlt.
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. Generáljon vonalkódot egyetlen rekordhoz (ismételje meg minden rekordnál egy szkriptben).
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. Állítsa össze a CSV fájlt (használhat egy egyszerű szkriptet, amely beolvassa a feltöltött JSON‑t, beilleszti a base64‑kódolt vonalkódot, és megírja a CSV‑t).
    Az összesítési lépés helyileg történik; az API nem biztosít közvetlen JSON‑ról‑CSV‑re végpontot.

  2. A kapott CSV letöltése.

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

A paraméterek teljes listájáért tekintse meg a hivatalos API dokumentációt.

A környezet előkészítése

A kódolás megkezdéséhez PHP futtatókörnyezetre (7.4 vagy újabb) és egy érvényes Aspose.BarCode Cloud fiókra van szükség.

composer require aspose-barcode-cloud

Letöltse az SDK csomagot a hivatalos kiadási oldalról: Aspose.BarCode Cloud SDK for PHP Download. A telepítés után hozza létre a config.php fájlt a saját APP_SID és APP_KEY értékeivel.

Nagy JSON feldolgozási teljesítmény optimalizálása

  1. A JSON fájl streamelése - olvassa soronként a teljes fájl memóriába betöltése helyett.
  2. A BarCodeApi példány újrahasználata - minden rekordhoz új kliens létrehozása plusz terhet jelent.
  3. A vonalkód felbontás korlátozása - 300 dpi elegendő a legtöbb jelentéshez; alacsonyabb értékek csökkentik a payload méretét.
  4. CSV sorok írása kötegelt módon - pár sort puffereljen a fputcsv hívása előtt a lemez I/O minimalizálása érdekében.

Gyakorlati tippek a hatékony JSON‑CSV átalakításhoz

  • Használjon pontosvesszőt (;) vagy tabulátort (\t) elválasztóként, ha az adatok vesszőket tartalmazhatnak.
  • Kódolja a nem‑ASCII karaktereket UTF‑8‑al, és előállítsa a BOM‑t (\xEF\xBB\xBF) az Excel kompatibilitás érdekében.
  • Tárolja a vonalkód képeket Base64 karakterláncokként a CSV‑ben, hogy a fájl önálló legyen.
  • Tisztítsa meg a temporális vonalkód mappát minden futtatás után, hogy elkerülje a lemez zsúfoltságát.
  • Ellenőrizze a JSON sorokat a json_last_error() függvénnyel, hogy hibás rekordokat elegánsan kihagyja.

Következtetés

Ez az útmutató végigvezette Önt egy teljes JSON‑CSV kódpéldán keresztül PHP‑ban, az Aspose.BarCode Cloud SDK for PHP használatával. Megtanulta, hogyan konfigurálja az SDK‑t, hogyan generáljon vonalkódokat minden rekordhoz, hogyan kezelje az egyéni elválasztókat és az UTF‑8 kódolást, valamint hogyan alkalmazzon teljesítményoptimalizációkat nagy adathalmazok esetén. Az SDK egy kereskedelmi termék; licencet vásárolhat a termelési használathoz, vagy ideiglenes licencet szerezhet a ideiglenes licenc oldal oldalról a könyvtár kiértékeléséhez. Kezdje el ma a kód integrálását, és egyszerűsítse adatcsere‑folyamatait.

GYIK

Q: Hogyan kezeli a PHP-ben a JSON‑ról CSV‑re konvertáló kódpélda a beágyazott objektumokat?
A: A beágyazott tömböket vagy objektumokat a json_encode segítségével JSON‑szöveggé alakítja, mielőtt a CSV‑be íródna, ezáltal biztosítva, hogy a CSV lapos maradjon, miközben megőrzi az eredeti adatokat. További részletekért tekintse meg az Aspose.BarCode Cloud SDK for PHP dokumentáció.

Q: Módosíthatom a CSV elválasztót a JSON‑ról CSV‑re konvertáló PHP szkriptben?
A: Igen, módosítsa a $delimiter változót a szkript elején (például állítsa ','‑ra, ha vesszővel elválasztott fájlt szeretne). A szkript tiszteletben tartja a megadott egykarakteres elválasztót.

Q: Van mód arra, hogy több ezer JSON rekordot hatékonyan dolgozzunk fel?
A: Természetesen. A tutorial teljesítmény szekciója azt javasolja, hogy streameljük a bemeneti fájlt, újrahasználjuk az API klienst, és sorokat kötegelt módon írjunk. Ezek a technikák csökkentik a memóriahasználatot és felgyorsítják a nagy JSON fájlok feldolgozását.

Q: Támogatja a PHP JSON‑ról CSV‑re konvertáló segédprogram más vonalkódformátumokat?
A: A $barcodeFormat változó bármely, az Aspose.BarCode által támogatott szimbólumra beállítható, például QR, DataMatrix vagy Code39. Csak frissítse az értéket a script futtatása előtt.

További információk