Konvertering af JSON poster til et CSV format er et hyppigt krav til rapportering og dataudveksling i moderne PHP applikationer. Aspose.BarCode Cloud SDK for PHP leverer et kraftfuldt API til at generere stregkodebilleder og håndtere filtransformationer direkte fra din server. I denne vejledning vil du se et komplet JSON‑til‑CSV kodeeksempel i PHP, som også indlejrer stregkodebilleder for hver post. Vi vil gennemgå opsætningen, den trin‑for‑trin implementering, et cURL‑alternativ og bedste praksis for ydeevne.
Sådan transformeres JSON-data til CSV i PHP - Trin for trin
- Installer SDK’en via Composer: Brug den officielle Composer-pakke til at tilføje biblioteket til dit projekt.
composer require aspose-barcode-cloud
- Konfigurer API-legitimationsoplysninger og opret BarCodeApi‑instansen: Erstat
YOUR_APP_SIDogYOUR_APP_KEYmed dine cloud‑legitimationsoplysninger.
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);
Reference: BarCodeApi class. 3. Åbn kilde‑JSON‑filen og mål‑CSV‑filen: Scriptet arbejder med fil‑streams for at holde hukommelsesforbruget lavt.
$inputHandle = fopen($inputJsonPath, 'rb');
$outputHandle = fopen($outputCsvPath, 'wb');
- Loop gennem JSON‑poster, generer stregkoder, og skriv CSV‑rækker: Hver posts
id‑felt omdannes til et stregkode‑billede, kodet i base64, og tilføjes til CSV‑filen.
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
// ...
}
- Ryd op i midlertidige filer og luk streams: Den midlertidige mappe fjernes efter behandlingen.
fclose($inputHandle);
fclose($outputHandle);
array_map('unlink', glob($barcodeTempDir . '/*.png'));
rmdir($barcodeTempDir);
Generering af CSV-output fra JSON i PHP - komplet kodeeksempel
Det følgende eksempel demonstrerer den fulde implementering af at læse en JSON‑fil, oprette stregkodebilleder og skrive dataene til en CSV‑fil ved hjælp af 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);
Bemærk: Dette kodeeksempel demonstrerer kernefunktionaliteten. Før du bruger det i dit projekt, skal du sørge for at opdatere filstierne (
input.json,output.csvosv.) så de matcher dine faktiske filplaceringer, bekræfte at alle nødvendige afhængigheder er korrekt installeret, og teste grundigt i dit udviklingsmiljø. Hvis du støder på problemer, så se venligst i den officielle dokumentation eller kontakt supportteamet for assistance.
Oprettelse af CSV via REST API fra JSON ved brug af cURL
Du kan opnå det samme resultat uden at skrive PHP‑kode ved at kalde Aspose.BarCode Cloud REST‑endpoints direkte. Arbejdsprocessen består af at uploade JSON‑filen, generere en stregkode for hver post og downloade den endelige CSV.
- Hent en adgangstoken (erstat pladsholderne med dine legitimationsoplysninger).
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"
Svaret indeholder access_token.
- Upload kilde‑JSON‑filen.
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
- Generer en stregkode for en enkelt post (gentag for hver post i et 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
-
Saml CSV-filen (du kan bruge et simpelt script, der læser den uploadede JSON, indsætter den base64‑kodede stregkode og skriver CSV-filen).
Samlingssteget udføres lokalt; API’et leverer ikke en direkte JSON‑til‑CSV endpoint. -
Download den resulterende 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
For en komplet liste over parametre, se den officielle API-dokumentation.
Gør miljøet klar
For at begynde at kode, har du brug for en PHP-runtime (7.4 eller senere) og en gyldig Aspose.BarCode Cloud-konto.
composer require aspose-barcode-cloud
Download SDK-pakken fra den officielle udgivelsesside: Aspose.BarCode Cloud SDK for PHP Download. Efter installationen skal du oprette en config.php-fil med din APP_SID og APP_KEY.
Optimering af ydeevne ved behandling af store JSON-filer
- Stream JSON-filen - læs linje for linje i stedet for at indlæse hele filen i hukommelsen.
- Genbrug BarCodeApi‑instansen - at oprette en ny klient for hver post tilføjer overhead.
- Begræns stregkodeopløsning - 300 dpi er tilstrækkeligt for de fleste rapporter; lavere værdier reducerer payload‑størrelsen.
- Skriv CSV‑rækker i batches - buffer nogle få rækker, før du kalder
fputcsv, for at minimere disk‑I/O.
Praktiske tips til effektiv JSON til CSV-konvertering
- Brug et semikolon (
;) eller et tabulatortegn (\t) som skilletegn, når dine data kan indeholde kommaer. - Kod ikke‑ASCII-tegn med UTF‑8 og tilføj en BOM (
\xEF\xBB\xBF) i starten for Excel-kompatibilitet. - Gem stregkodebilleder som Base64-strenge i CSV-filen for at holde filen selv‑indeholdt.
- Rengør den midlertidige stregkode-mappe efter hver kørsel for at undgå rod på disken.
- Valider JSON‑linjer med
json_last_error()for at springe fejlbehæftede poster over på en elegant måde.
Konklusion
Denne vejledning har guidet dig gennem et komplet JSON til CSV kodeeksempel i PHP ved hjælp af Aspose.BarCode Cloud SDK for PHP. Du har lært, hvordan du konfigurerer SDK’en, genererer stregkoder for hver post, håndterer brugerdefinerede skilletegn og UTF‑8‑kodning, samt anvender ydeevneoptimeringer for store datasæt. SDK’en er et kommercielt produkt; du kan købe en licens til produktionsbrug eller få en midlertidig licens fra midlertidig licensside for at evaluere biblioteket. Begynd at integrere koden i dag og strømlin dine data‑udvekslings‑pipelines.
Ofte stillede spørgsmål
Q: Hvordan håndterer JSON til CSV kodeeksemplet i PHP indlejrede objekter?
A: Indlejrede arrays eller objekter konverteres til en JSON‑streng ved hjælp af json_encode, før de skrives til CSV, hvilket sikrer, at CSV forbliver flad, mens de oprindelige data bevares. For flere detaljer, se Aspose.BarCode Cloud SDK for PHP-dokumentation.
Q: Kan jeg ændre CSV‑separatoren i JSON‑til‑CSV‑scriptet i PHP?
A: Ja, ændr $delimiter‑variablen øverst i scriptet (f.eks. sæt den til ',' for en komma‑separeret fil). Scriptet respekterer enhver enkelt‑tegn separator, du angiver.
Q: Er der en måde at behandle tusindvis af JSON-poster effektivt?
A: Absolut. Tutorialens afsnit om ydeevne anbefaler at streame inputfilen, genbruge API-klienten og skrive rækker i batches. Disse teknikker reducerer hukommelsesforbruget og øger hastigheden ved behandling af store JSON-filer.
Q: Støtter JSON til CSV‑værktøjet i PHP andre stregkodeformater?
A: Variablen $barcodeFormat kan sættes til enhver symbologi, der understøttes af Aspose.BarCode, såsom QR, DataMatrix eller Code39. Opdater blot værdien, inden du kører scriptet.
Læs mere
- Gem stregkode i BMP, SVG, GIF og TIFF-format ved hjælp af Aspose.BarCode for Cloud 18.3
- Understøttelse af CodablockF-stregkode og læs stregkode fra anmodningskroppen ved hjælp af Aspose.BarCode for cloud 17.4
- Ny Perl SDK til generering og genkendelse af stregkoder ved hjælp af kraftfulde Aspose.Barcode Cloud APIs