JSON kayıtlarını JSON formatından CSV formatına dönüştürmek, modern PHP uygulamalarında raporlama ve veri alışverişi için sıkça ihtiyaç duyulan bir gereksinimdir. Aspose.BarCode Cloud SDK for PHP sunucunuzdan doğrudan barkod görüntüleri oluşturmak ve dosya dönüşümlerini yönetmek için güçlü bir API sağlar. Bu öğreticide, her kayıt için barkod görüntülerini de içeren tam bir JSON‑to‑CSV kod örneğini PHP’de göreceksiniz. Kurulumu, adım‑adım uygulamayı, bir cURL alternatifini ve performans en iyi uygulamalarını ele alacağız.

JSON Verilerini PHP’de CSV’ye Dönüştürme - Adım Adım

  1. Composer aracılığıyla SDK’yı kurun: Resmi Composer paketini kullanarak kütüphaneyi projenize ekleyin.
composer require aspose-barcode-cloud
  1. API kimlik bilgilerini yapılandırın ve BarCodeApi örneğini oluşturun: YOUR_APP_SID ve YOUR_APP_KEY değerlerini bulut kimlik bilgilerinizle değiştirin.
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);

Referans: BarCodeApi class. 3. Kaynak JSON dosyasını ve hedef CSV dosyasını açın: Betik, bellek kullanımını düşük tutmak için dosya akışlarıyla çalışır.

$inputHandle  = fopen($inputJsonPath, 'rb');
$outputHandle = fopen($outputCsvPath, 'wb');
  1. JSON kayıtları üzerinde döngü yapın, barkodları oluşturun ve CSV satırlarını yazın: Her kaydın id alanı barkod görüntüsüne dönüştürülür, base64 olarak kodlanır ve CSV’ye eklenir.
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. Geçici dosyaları temizleyin ve akışları kapatın: İşlem tamamlandıktan sonra geçici klasör kaldırılır.
fclose($inputHandle);
fclose($outputHandle);
array_map('unlink', glob($barcodeTempDir . '/*.png'));
rmdir($barcodeTempDir);

PHP’de JSON’dan CSV Çıktısı Oluşturma - Tam Kod Örneği

Aşağıdaki örnek, bir JSON dosyasını okuma, barkod görüntüleri oluşturma ve verileri bir CSV dosyasına yazma işlemlerinin tam uygulamasını Aspose.BarCode Cloud SDK for PHP kullanarak göstermektedir.

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

Not: Bu kod örneği temel işlevselliği göstermektedir. Projenizde kullanmadan önce, dosya yollarını (input.json, output.csv vb.) gerçek dosya konumlarınıza göre güncellediğinizden, tüm gerekli bağımlılıkların doğru şekilde yüklendiğinden emin olun ve geliştirme ortamınızda kapsamlı bir şekilde test edin. Herhangi bir sorunla karşılaşırsanız, lütfen resmi belgeler adresine bakın veya destek ekibi ile iletişime geçin.

JSON’dan cURL Kullanarak REST API ile CSV Oluşturma

PHP kodu yazmadan aynı sonucu doğrudan Aspose.BarCode Cloud REST uç noktalarını çağırarak elde edebilirsiniz. İş akışı, JSON dosyasını yüklemeyi, her kayıt için bir barkod oluşturmayı ve son CSV’yi indirmeyi içerir.

  1. Erişim belirteci alın (yer tutucuları kimlik bilgilerinizle değiştirin).
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"

Yanıt access_token içerir.

  1. Kaynak JSON dosyasını yükleyin.
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. Tek bir kayıt için barkod oluşturun (betikte her kayıt için tekrarlayın).
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 dosyasını birleştirin (yüklenen JSON’u okuyan, base64‑kodlu barkodu ekleyen ve CSV’yi yazan basit bir betik kullanabilirsiniz).
    Birleştirme adımı yerel olarak gerçekleştirilir; API doğrudan JSON‑to‑CSV uç noktası sağlamaz.

  2. Sonuçta oluşan CSV’yi indirin.

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

Tam bir parametre listesi için, resmi API belgelerine bakın.

Ortamı Hazırlama

Kodlamaya başlamak için bir PHP çalışma zamanı (7.4 veya daha yeni) ve geçerli bir Aspose.BarCode Cloud hesabına ihtiyacınız var.

composer require aspose-barcode-cloud

SDK paketini resmi sürüm sayfasından indirin: Aspose.BarCode Cloud SDK for PHP İndir. Kurulumdan sonra, APP_SID ve APP_KEY değerlerinizle bir config.php dosyası oluşturun.

Büyük JSON İşleme Performansını Optimize Etme

  1. JSON dosyasını akış olarak işleyin - tüm dosyayı belleğe yüklemek yerine satır satır okuyun.
  2. BarCodeApi örneğini yeniden kullanın - her kayıt için yeni bir istemci oluşturmak ek yük getirir.
  3. Barkod çözünürlüğünü sınırlayın - 300 dpi çoğu rapor için yeterlidir; daha düşük değerler veri yükü boyutunu azaltır.
  4. CSV satırlarını toplu olarak yazın - disk I/O’yu en aza indirmek için fputcsv‘yi çağırmadan önce birkaç satırı tamponlayın.

JSON’dan CSV’ye Verimli Dönüşüm İçin Pratik İpuçları

  • Veriniz virgül içerebileceği durumlarda ayırıcı olarak noktalı virgül (;) veya sekme (\t) kullanın.
  • UTF‑8 ile ASCII dışı karakterleri kodlayın ve Excel uyumluluğu için bir BOM (\xEF\xBB\xBF) ekleyin.
  • CSV içinde barkod görüntülerini Base64 dizgileri olarak saklayarak dosyanın kendi içinde kalmasını sağlayın.
  • Disk dağınıklığını önlemek için her çalıştırmadan sonra geçici barkod klasörünü temizleyin.
  • json_last_error() ile JSON satırlarını doğrulayarak hatalı kayıtları sorunsuz bir şekilde atlayın.

Sonuç

Bu kılavuz, Aspose.BarCode Cloud SDK for PHP kullanarak PHP’de tam bir JSON’dan CSV’ye kod örneği üzerinden sizi yönlendirdi. SDK’yı nasıl yapılandıracağınızı, her kayıt için barkodları nasıl oluşturacağınızı, özel ayırıcıları ve UTF‑8 kodlamasını nasıl ele alacağınızı ve büyük veri kümeleri için performans iyileştirmelerini nasıl uygulayacağınızı öğrendiniz. SDK ticari bir üründür; üretim kullanımı için bir lisans satın alabilir veya kütüphaneyi değerlendirmek için geçici lisans sayfası üzerinden geçici bir lisans edinebilirsiniz. Kodu bugün entegre etmeye başlayın ve veri alışverişi boru hatlarınızı sadeleştirin.

SSS

Q: PHP’deki JSON’dan CSV’ye kod örneği iç içe nesneleri nasıl işler?
A: İç içe diziler veya nesneler, CSV’ye yazılmadan önce json_encode kullanılarak bir JSON dizesine dönüştürülür, bu sayede CSV düz kalır ve orijinal veri korunur. Daha fazla ayrıntı için Aspose.BarCode Cloud SDK for PHP belgesi inceleyin.

S: JSON’dan CSV’ye PHP betiğinde CSV ayırıcıyı değiştirebilir miyim?
C: Evet, betiğin en üstündeki $delimiter değişkenini değiştirin (ör. virgül‑ayırıcı bir dosya için ',' olarak ayarlayın). Betik, sağladığınız tek‑karakterli ayırıcıyı kabul eder.

Q: Binlerce JSON kaydını verimli bir şekilde işlemek için bir yol var mı?
A: Kesinlikle. Eğitim materyalinin performans bölümünde, girdi dosyasını akış olarak işleme, API istemcisini yeniden kullanma ve satırları toplu olarak yazma önerilir. Bu teknikler bellek kullanımını azaltır ve büyük JSON dosyaları için işleme hızını artırır.

Q: PHP’deki JSON’dan CSV’ye dönüştürme yardımcı programı diğer barkod formatlarını destekliyor mu?
A: $barcodeFormat değişkeni, Aspose.BarCode tarafından desteklenen herhangi bir sembolojiye, örneğin QR, DataMatrix veya Code39 gibi, ayarlanabilir. Betiği çalıştırmadan önce değeri güncelleyin.

Daha Fazla Oku