La conversion des enregistrements JSON en format CSV est une exigence fréquente pour le reporting et l’échange de données dans les applications PHP. Aspose.BarCode Cloud SDK for PHP fournit une API puissante pour générer des images de code‑barres et gérer les transformations de fichiers directement depuis votre serveur. Dans ce tutoriel, vous verrez un exemple complet de code JSON vers CSV en PHP qui intègre également des images de code‑barres pour chaque enregistrement. Nous parcourrons la configuration, l’implémentation étape‑par‑étape, une alternative cURL et les meilleures pratiques de performance.
Comment transformer des données JSON en CSV en PHP - Étape par étape
- Installez le SDK via Composer : Utilisez le package officiel Composer pour ajouter la bibliothèque à votre projet.
composer require aspose-barcode-cloud
- Configurez les informations d’identification de l’API et créez l’instance BarCodeApi : Remplacez
YOUR_APP_SIDetYOUR_APP_KEYpar vos informations d’identification 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);
Référence : BarCodeApi class. 3. Ouvrez le fichier JSON source et le fichier CSV cible : Le script utilise des flux de fichiers pour maintenir une faible consommation de mémoire.
$inputHandle = fopen($inputJsonPath, 'rb');
$outputHandle = fopen($outputCsvPath, 'wb');
- Parcourez les enregistrements JSON, générez les codes-barres et écrivez les lignes CSV : Le champ
idde chaque enregistrement est transformé en image de code-barres, encodé en base64, puis ajouté au 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
// ...
}
- Nettoyez les fichiers temporaires et fermez les flux : Le dossier temporaire est supprimé après le traitement.
fclose($inputHandle);
fclose($outputHandle);
array_map('unlink', glob($barcodeTempDir . '/*.png'));
rmdir($barcodeTempDir);
Génération d’une sortie CSV à partir de JSON en PHP - Exemple complet de code
L’exemple suivant montre l’implémentation complète de la lecture d’un fichier JSON, de la création d’images de code‑barres et de l’écriture des données dans un fichier CSV en utilisant 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);
Remarque : Cet exemple de code démontre la fonctionnalité principale. Avant de l’utiliser dans votre projet, assurez‑vous de mettre à jour les chemins de fichiers (
input.json,output.csv, etc.) pour qu’ils correspondent à vos emplacements réels, vérifiez que toutes les dépendances requises sont correctement installées, et testez soigneusement dans votre environnement de développement. Si vous rencontrez des problèmes, veuillez consulter la documentation officielle ou contacter l’équipe de support pour obtenir de l’aide.
Création de CSV via l’API REST à partir de JSON avec cURL
Vous pouvez obtenir le même résultat sans écrire de code PHP en appelant directement les points de terminaison REST d’Aspose.BarCode Cloud. Le flux de travail consiste à télécharger le fichier JSON, à générer un code‑barres pour chaque enregistrement et à télécharger le CSV final.
- Obtenez un jeton d’accès (remplacez les espaces réservés par vos informations d’identification).
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 réponse contient access_token.
- Téléchargez le fichier JSON source.
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
- Générer un code-barres pour un enregistrement unique (répétez pour chaque enregistrement dans un 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
-
Assembler le fichier CSV (vous pouvez utiliser un script simple qui lit le JSON téléchargé, insère le code‑barres encodé en base64 et écrit le CSV).
L’étape d’assemblage est effectuée localement ; l’API ne fournit pas de point de terminaison direct JSON‑vers‑CSV. -
Téléchargez le CSV résultant.
curl -X GET "https://api.aspose.cloud/v3.0/barcode/storage/file/output.csv" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o data/output.csv
Pour une liste complète des paramètres, consultez la documentation officielle de l’API.
Préparer l’environnement
Pour commencer à coder, vous avez besoin d’un runtime PHP (7.4 ou version ultérieure) et d’un compte Aspose.BarCode Cloud valide.
composer require aspose-barcode-cloud
Téléchargez le package SDK depuis la page officielle de publication : Aspose.BarCode Cloud SDK for PHP Download. Après l’installation, créez un fichier config.php avec votre APP_SID et APP_KEY.
Optimisation des performances du traitement de gros fichiers JSON
- Diffuser le fichier JSON - lire ligne par ligne au lieu de charger le fichier entier en mémoire.
- Réutiliser l’instance BarCodeApi - créer un nouveau client pour chaque enregistrement ajoute une surcharge.
- Limiter la résolution du code‑barres - 300 dpi est suffisant pour la plupart des rapports ; des valeurs plus faibles réduisent la taille du chargement.
- Écrire les lignes CSV par lots - mettre en mémoire tampon quelques lignes avant d’appeler
fputcsvafin de minimiser les E/S disque.
Conseils pratiques pour une conversion efficace de JSON en CSV
- Utilisez un point-virgule (
;) ou une tabulation (\t) comme délimiteur lorsque vos données peuvent contenir des virgules. - Encodez les caractères non‑ASCII en UTF‑8 et préfixez d’un BOM (
\xEF\xBB\xBF) pour la compatibilité avec Excel. - Stockez les images de code-barres sous forme de chaînes Base64 dans le CSV afin que le fichier soit autonome.
- Nettoyez le dossier temporaire des codes-barres après chaque exécution pour éviter l’encombrement du disque.
- Validez les lignes JSON avec
json_last_error()pour ignorer gracieusement les enregistrements malformés.
Conclusion
Ce guide vous a présenté un exemple complet de code JSON vers CSV en PHP en utilisant le Aspose.BarCode Cloud SDK for PHP. Vous avez appris comment configurer le SDK, générer des codes‑barres pour chaque enregistrement, gérer les délimiteurs personnalisés et l’encodage UTF‑8, et appliquer des optimisations de performance pour les grands ensembles de données. Le SDK est un produit commercial ; vous pouvez acheter une licence pour une utilisation en production ou obtenir une licence temporaire depuis la page de licence temporaire pour évaluer la bibliothèque. Commencez à intégrer le code dès aujourd’hui et rationalisez vos pipelines d’échange de données.
FAQ
Q: Comment l’exemple de code JSON vers CSV en PHP gère-t-il les objets imbriqués ?
A: Les tableaux ou objets imbriqués sont convertis en chaîne JSON à l’aide de json_encode avant d’être écrits dans le CSV, garantissant que le CSV reste plat tout en préservant les données d’origine. Pour plus de détails, consultez la documentation Aspose.BarCode Cloud SDK for PHP.
Q: Puis‑je changer le délimiteur CSV dans le script JSON vers CSV en PHP ?
A: Oui, modifiez la variable $delimiter en haut du script (par exemple, définissez‑la sur ',' pour un fichier séparé par des virgules). Le script respecte tout délimiteur d’un seul caractère que vous fournissez.
Q: Existe-t-il un moyen de traiter des milliers d’enregistrements JSON efficacement ?
A: Absolument. La section performance du tutoriel recommande de diffuser le fichier d’entrée en flux, de réutiliser le client API et d’écrire les lignes par lots. Ces techniques réduisent l’utilisation de la mémoire et accélèrent le traitement des gros fichiers JSON.
Q: L’utilitaire JSON vers CSV en PHP prend‑il en charge d’autres formats de code‑barres ?
A: La variable $barcodeFormat peut être définie sur n’importe quelle symbologie prise en charge par Aspose.BarCode, comme QR, DataMatrix ou Code39. Il suffit de mettre à jour la valeur avant d’exécuter le script.
En savoir plus
- Enregistrer le code-barres au format BMP, SVG, GIF et TIFF à l’aide d’Aspose.BarCode for Cloud 18.3
- Prise en charge du code-barres CodablockF et lecture du code-barres depuis le corps de la requête à l’aide d’Aspose.BarCode for cloud 17.4
- Nouveau SDK Perl pour la génération et la reconnaissance de codes-barres utilisant les puissantes API Aspose.Barcode Cloud