Convertire i record JSON in formato CSV è una necessità frequente per la generazione di report e lo scambio di dati nelle moderne applicazioni PHP. Aspose.BarCode Cloud SDK for PHP fornisce un’API potente per generare immagini di codici a barre e gestire le trasformazioni di file direttamente dal tuo server. In questo tutorial vedrai un esempio completo di codice JSON a CSV in PHP che incorpora anche immagini di codici a barre per ogni record. Esamineremo la configurazione, l’implementazione passo‑passo, un’alternativa cURL e le migliori pratiche di prestazioni.
Come trasformare i dati JSON in CSV in PHP - Passo dopo passo
- Installa l’SDK tramite Composer: Usa il pacchetto Composer ufficiale per aggiungere la libreria al tuo progetto.
composer require aspose-barcode-cloud
- Configura le credenziali API e crea l’istanza BarCodeApi: Sostituisci
YOUR_APP_SIDeYOUR_APP_KEYcon le tue credenziali 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);
Riferimento: BarCodeApi class. 3. Apri il file JSON di origine e il file CSV di destinazione: Lo script utilizza flussi di file per mantenere basso l’uso della memoria.
$inputHandle = fopen($inputJsonPath, 'rb');
$outputHandle = fopen($outputCsvPath, 'wb');
- Itera sui record JSON, genera i codici a barre e scrivi le righe CSV: Il campo
iddi ogni record viene trasformato in un’immagine di codice a barre, codificata in base64 e aggiunta al 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
// ...
}
- Pulisci i file temporanei e chiudi i flussi: La cartella temporanea viene rimossa dopo l’elaborazione.
fclose($inputHandle);
fclose($outputHandle);
array_map('unlink', glob($barcodeTempDir . '/*.png'));
rmdir($barcodeTempDir);
Generazione dell’output CSV da JSON in PHP - Esempio di codice completo
Il seguente esempio dimostra l’implementazione completa della lettura di un file JSON, della creazione di immagini di codici a barre e della scrittura dei dati in un file CSV utilizzando 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);
Nota: Questo esempio di codice dimostra la funzionalità principale. Prima di utilizzarlo nel tuo progetto, assicurati di aggiornare i percorsi dei file (
input.json,output.csv, ecc.) per corrispondere alle tue effettive posizioni dei file, verifica che tutte le dipendenze richieste siano installate correttamente e testa accuratamente nell’ambiente di sviluppo. Se riscontri problemi, consulta la documentazione ufficiale o contatta il team di supporto per assistenza.
Creazione di CSV tramite REST API da JSON usando cURL
È possibile ottenere lo stesso risultato senza scrivere codice PHP chiamando direttamente gli endpoint REST di Aspose.BarCode Cloud. Il flusso di lavoro consiste nel caricare il file JSON, generare un codice a barre per ogni record e scaricare il CSV finale.
- Ottieni un token di accesso (sostituisci i segnaposto con le tue credenziali).
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"
La risposta contiene access_token.
- Carica il file JSON di origine.
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
- Genera un codice a barre per un singolo record (ripeti per ogni record in uno 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
-
Assembla il file CSV (puoi utilizzare uno script semplice che legge il JSON caricato, inserisce il codice a barre codificato in base64 e scrive il CSV).
Il passaggio di assemblaggio viene eseguito localmente; l’API non fornisce un endpoint diretto JSON‑to‑CSV. -
Scarica il CSV risultante.
curl -X GET "https://api.aspose.cloud/v3.0/barcode/storage/file/output.csv" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o data/output.csv
Per un elenco completo di parametri, vedere la documentazione API ufficiale.
Preparare l’ambiente
Per iniziare a programmare, è necessario un runtime PHP (7.4 o successivo) e un account valido di Aspose.BarCode Cloud.
composer require aspose-barcode-cloud
Scarica il pacchetto SDK dalla pagina di rilascio ufficiale: Aspose.BarCode Cloud SDK for PHP Download. Dopo l’installazione, crea un file config.php con il tuo APP_SID e APP_KEY.
Ottimizzare le prestazioni dell’elaborazione di grandi JSON
- Stream del file JSON - leggere riga per riga invece di caricare l’intero file in memoria.
- Riutilizzare l’istanza BarCodeApi - creare un nuovo client per ogni record aggiunge overhead.
- Limitare la risoluzione del codice a barre - 300 dpi sono sufficienti per la maggior parte dei report; valori più bassi riducono la dimensione del payload.
- Scrivere le righe CSV in batch - bufferizzare alcune righe prima di chiamare
fputcsvper ridurre al minimo l’I/O del disco.
Suggerimenti pratici per una conversione efficiente da JSON a CSV
- Usa un punto e virgola (
;) o una tabulazione (\t) come delimitatore quando i tuoi dati possono contenere virgole. - Codifica i caratteri non‑ASCII con UTF‑8 e anteponi un BOM (
\xEF\xBB\xBF) per la compatibilità con Excel. - Memorizza le immagini dei codici a barre come stringhe Base64 all’interno del CSV per mantenere il file autonomo.
- Pulisci la cartella temporanea dei codici a barre dopo ogni esecuzione per evitare l’accumulo di file sul disco.
- Convalida le righe JSON con
json_last_error()per ignorare i record malformati in modo elegante.
Conclusione
Questa guida ti ha accompagnato attraverso un esempio completo di codice JSON‑to‑CSV in PHP utilizzando l’Aspose.BarCode Cloud SDK for PHP. Hai imparato come configurare l’SDK, generare codici a barre per ogni record, gestire delimitatori personalizzati e la codifica UTF‑8, e applicare ottimizzazioni delle prestazioni per grandi set di dati. L’SDK è un prodotto commerciale; puoi acquistare una licenza per l’uso in produzione o ottenere una licenza temporanea dalla pagina di licenza temporanea per valutare la libreria. Inizia a integrare il codice oggi stesso e semplifica i tuoi flussi di scambio dati.
Domande frequenti
Q: Come gestisce l’esempio di codice JSON to CSV in PHP gli oggetti nidificati?
A: Gli array o gli oggetti nidificati vengono convertiti in una stringa JSON usando json_encode prima di essere scritti nel CSV, garantendo che il CSV rimanga piatto preservando i dati originali. Per ulteriori dettagli, consultare la Aspose.BarCode Cloud SDK for PHP documentation.
Q: Posso cambiare il delimitatore CSV nello script JSON to CSV in PHP?
A: Sì, modifica la variabile $delimiter all’inizio dello script (ad esempio, impostala su ',' per un file separato da virgole). Lo script rispetta qualsiasi delimitatore a singolo carattere che fornisci.
Q: Esiste un modo per elaborare migliaia di record JSON in modo efficiente?
A: Assolutamente. La sezione sulle prestazioni del tutorial consiglia di eseguire lo streaming del file di input, riutilizzare il client API e scrivere le righe in batch. Queste tecniche riducono l’uso della memoria e accelerano l’elaborazione di file JSON di grandi dimensioni.
Q: L’utilità JSON to CSV in PHP supporta altri formati di codice a barre?
A: La variabile $barcodeFormat può essere impostata su qualsiasi simbologia supportata da Aspose.BarCode, come QR, DataMatrix o Code39. Basta aggiornare il valore prima di eseguire lo script.
Leggi di più
- Salva il codice a barre in formato BMP, SVG, GIF e TIFF utilizzando Aspose.BarCode for Cloud 18.3
- Supporto per il codice a barre CodablockF e lettura del codice a barre dal corpo della richiesta utilizzando Aspose.BarCode for cloud 17.4
- Nuovo SDK Perl per la generazione e il riconoscimento di codici a barre utilizzando potenti Aspose.Barcode Cloud APIs