Das Konvertieren von JSON Datensätzen in ein CSV Format ist eine häufige Anforderung für Berichte und Datenaustausch in modernen PHP Anwendungen. Aspose.BarCode Cloud SDK for PHP bietet eine leistungsstarke API zum Erzeugen von Barcode‑Bildern und zur Handhabung von Dateitransformationen direkt auf Ihrem Server. In diesem Tutorial sehen Sie ein vollständiges JSON‑zu‑CSV‑Codebeispiel in PHP, das außerdem Barcode‑Bilder für jeden Datensatz einbettet. Wir gehen die Einrichtung, die schrittweise Implementierung, eine cURL‑Alternative und bewährte Leistungspraktiken durch.
Wie man JSON-Daten in CSV in PHP umwandelt – Schritt für Schritt
- SDK über Composer installieren: Verwenden Sie das offizielle Composer‑Paket, um die Bibliothek zu Ihrem Projekt hinzuzufügen.
composer require aspose-barcode-cloud
- API‑Anmeldeinformationen konfigurieren und eine BarCodeApi‑Instanz erstellen: Ersetzen Sie
YOUR_APP_SIDundYOUR_APP_KEYdurch Ihre Cloud‑Anmeldeinformationen.
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);
Referenz: BarCodeApi class. 3. Quell‑JSON‑Datei und Ziel‑CSV‑Datei öffnen: Das Skript arbeitet mit Dateistreams, um den Speicherverbrauch gering zu halten.
$inputHandle = fopen($inputJsonPath, 'rb');
$outputHandle = fopen($outputCsvPath, 'wb');
- Durch JSON‑Datensätze iterieren, Barcodes generieren und CSV‑Zeilen schreiben: Das
id‑Feld jedes Datensatzes wird in ein Barcode‑Bild umgewandelt, in Base64 kodiert und der CSV hinzugefügt.
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
// ...
}
- Temporäre Dateien bereinigen und Streams schließen: Der temporäre Ordner wird nach der Verarbeitung entfernt.
fclose($inputHandle);
fclose($outputHandle);
array_map('unlink', glob($barcodeTempDir . '/*.png'));
rmdir($barcodeTempDir);
CSV-Ausgabe aus JSON in PHP generieren – Vollständiges Codebeispiel
Das folgende Beispiel demonstriert die vollständige Implementierung des Lesens einer JSON‑Datei, des Erstellens von Barcode‑Bildern und des Schreibens der Daten in eine CSV‑Datei mithilfe des Aspose.BarCode Cloud SDK für 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);
Hinweis: Dieses Codebeispiel demonstriert die Kernfunktionalität. Bevor Sie es in Ihrem Projekt verwenden, stellen Sie sicher, dass Sie die Dateipfade (
input.json,output.csvusw.) an Ihre tatsächlichen Speicherorte anpassen, dass alle erforderlichen Abhängigkeiten korrekt installiert sind und testen Sie gründlich in Ihrer Entwicklungsumgebung. Wenn Sie auf Probleme stoßen, lesen Sie bitte die offizielle Dokumentation oder wenden Sie sich an das Support-Team für Unterstützung.
Erstellen von CSV über REST API aus JSON mit cURL
Sie können dasselbe Ergebnis erzielen, ohne PHP‑Code zu schreiben, indem Sie die Aspose.BarCode Cloud REST‑Endpunkte direkt aufrufen. Der Workflow besteht darin, die JSON‑Datei hochzuladen, für jeden Datensatz einen Barcode zu generieren und die endgültige CSV herunterzuladen.
- Zugriffstoken erhalten (ersetzen Sie Platzhalter durch Ihre Anmeldeinformationen).
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"
Die Antwort enthält access_token.
- Laden Sie die Quell‑JSON‑Datei hoch.
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
- Generieren Sie einen Barcode für einen einzelnen Datensatz (für jeden Datensatz im Skript wiederholen).
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
-
CSV-Datei zusammenstellen (Sie können ein einfaches Skript verwenden, das das hochgeladene JSON liest, den base64‑kodierten Barcode einfügt und die CSV schreibt).
Der Zusammenstellungsschritt wird lokal durchgeführt; die API bietet keinen direkten JSON‑zu‑CSV‑Endpunkt. -
Laden Sie die resultierende CSV herunter.
curl -X GET "https://api.aspose.cloud/v3.0/barcode/storage/file/output.csv" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o data/output.csv
Für eine vollständige Liste der Parameter siehe die offizielle API-Dokumentation.
Vorbereitung der Umgebung
Um mit dem Programmieren zu beginnen, benötigen Sie eine PHP‑Laufzeit (7.4 oder höher) und ein gültiges Aspose.BarCode Cloud‑Konto.
composer require aspose-barcode-cloud
Laden Sie das SDK‑Paket von der offiziellen Release‑Seite herunter: Aspose.BarCode Cloud SDK for PHP Download. Nach der Installation erstellen Sie eine config.php‑Datei mit Ihrem APP_SID und APP_KEY.
Optimierung der Verarbeitung großer JSON-Dateien
- JSON-Datei streamen - Zeile für Zeile lesen, anstatt die gesamte Datei in den Speicher zu laden.
- BarCodeApi-Instanz wiederverwenden - Das Erstellen eines neuen Clients für jeden Datensatz verursacht zusätzlichen Aufwand.
- Barcode-Auflösung begrenzen - 300 dpi sind für die meisten Berichte ausreichend; niedrigere Werte reduzieren die Payload-Größe.
- CSV-Zeilen stapelweise schreiben - Ein paar Zeilen puffern, bevor
fputcsvaufgerufen wird, um die Festplatten‑E/A zu minimieren.
Praktische Tipps für eine effiziente JSON-zu-CSV-Konvertierung
- Verwenden Sie ein Semikolon (
;) oder einen Tabulator (\t) als Trennzeichen, wenn Ihre Daten Kommas enthalten können. - Kodieren Sie Nicht‑ASCII‑Zeichen mit UTF‑8 und fügen Sie ein BOM (
\xEF\xBB\xBF) voran, um die Kompatibilität mit Excel zu gewährleisten. - Speichern Sie Barcode‑Bilder als Base64‑Zeichenketten in der CSV, um die Datei eigenständig zu halten.
- Leeren Sie den temporären Barcode‑Ordner nach jedem Durchlauf, um Festplattenspeicher zu schonen.
- Validieren Sie JSON‑Zeilen mit
json_last_error(), um fehlerhafte Datensätze elegant zu überspringen.
Fazit
Dieser Leitfaden hat Sie durch ein vollständiges JSON‑zu‑CSV‑Codebeispiel in PHP geführt, das das Aspose.BarCode Cloud SDK for PHP verwendet. Sie haben gelernt, wie man das SDK konfiguriert, Barcodes für jeden Datensatz erzeugt, benutzerdefinierte Trennzeichen und UTF‑8‑Kodierung handhabt und Leistungsoptimierungen für große Datensätze anwendet. Das SDK ist ein kommerzielles Produkt; Sie können eine Lizenz für den Produktionseinsatz erwerben oder eine temporäre Lizenz von der temporären Lizenzseite erhalten, um die Bibliothek zu evaluieren. Beginnen Sie noch heute mit der Integration des Codes und optimieren Sie Ihre Datenaustausch‑Pipelines.
Häufig gestellte Fragen
F: Wie behandelt das JSON‑zu‑CSV‑Codebeispiel in PHP verschachtelte Objekte?
A: Verschachtelte Arrays oder Objekte werden mit json_encode in einen JSON‑String konvertiert, bevor sie in die CSV geschrieben werden, wodurch die CSV flach bleibt und die ursprünglichen Daten erhalten bleiben. Weitere Details finden Sie in der Aspose.BarCode Cloud SDK for PHP Dokumentation.
Q: Kann ich das CSV‑Trennzeichen im JSON‑zu‑CSV‑Skript in PHP ändern?
A: Ja, ändern Sie die Variable $delimiter am Anfang des Skripts (z. B. setzen Sie sie auf ',' für eine kommagetrennte Datei). Das Skript respektiert jedes ein‑zeichenige Trennzeichen, das Sie angeben.
Q: Gibt es eine Möglichkeit, Tausende von JSON‑Datensätzen effizient zu verarbeiten?
A: Auf jeden Fall. Der Performance‑Abschnitt des Tutorials empfiehlt, die Eingabedatei zu streamen, den API‑Client wiederzuverwenden und Zeilen stapelweise zu schreiben. Diese Techniken reduzieren den Speicherverbrauch und beschleunigen die Verarbeitung großer JSON‑Dateien.
Q: Unterstützt das JSON‑zu‑CSV‑Dienstprogramm in PHP weitere Barcode‑Formate?
A: Die Variable $barcodeFormat kann auf jede von Aspose.BarCode unterstützte Symbolik gesetzt werden, z. B. QR, DataMatrix oder Code39. Aktualisieren Sie einfach den Wert, bevor Sie das Skript ausführen.
Read More
- Barcode im BMP-, SVG-, GIF- und TIFF-Format speichern mit Aspose.BarCode für Cloud 18.3
- Unterstützung für CodablockF-Barcode und Lesen von Barcodes aus dem Anforderungstext mit Aspose.BarCode für Cloud 17.4
- Neues Perl SDK für die Barcode-Generierung und -Erkennung mit leistungsstarken Aspose.Barcode Cloud APIs