Converter registros JSON em formato CSV é uma necessidade frequente para relatórios e troca de dados em aplicações modernas PHP. O Aspose.BarCode Cloud SDK for PHP fornece uma API poderosa para gerar imagens de códigos de barras e manipular transformações de arquivos diretamente do seu servidor. Neste tutorial você verá um exemplo completo de código JSON para CSV em PHP que também incorpora imagens de códigos de barras para cada registro. Percorreremos a configuração, a implementação passo a passo, uma alternativa cURL e as melhores práticas de desempenho.
Como Transformar Dados JSON em CSV no PHP - Passo a Passo
- Instale o SDK via Composer: Use o pacote oficial do Composer para adicionar a biblioteca ao seu projeto.
composer require aspose-barcode-cloud
- Configure as credenciais da API e crie a instância BarCodeApi: Substitua
YOUR_APP_SIDeYOUR_APP_KEYpelas suas credenciais da nuvem.
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);
Referência: BarCodeApi class. 3. Abra o arquivo JSON de origem e o arquivo CSV de destino: O script trabalha com fluxos de arquivos para manter o uso de memória baixo.
$inputHandle = fopen($inputJsonPath, 'rb');
$outputHandle = fopen($outputCsvPath, 'wb');
- Percorra os registros JSON, gere códigos de barras e escreva linhas CSV: O campo
idde cada registro é convertido em uma imagem de código de barras, codificada em base64, e adicionada ao 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
// ...
}
- Limpe os arquivos temporários e feche os fluxos: A pasta temporária é removida após o processamento.
fclose($inputHandle);
fclose($outputHandle);
array_map('unlink', glob($barcodeTempDir . '/*.png'));
rmdir($barcodeTempDir);
Gerando Saída CSV a partir de JSON em PHP - Exemplo de Código Completo
O exemplo a seguir demonstra a implementação completa de leitura de um arquivo JSON, criação de imagens de código de barras e gravação dos dados em um arquivo CSV usando o 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: Este exemplo de código demonstra a funcionalidade principal. Antes de usá‑lo em seu projeto, certifique‑se de atualizar os caminhos dos arquivos (
input.json,output.csv, etc.) para corresponder às suas localizações reais, verifique se todas as dependências necessárias estão corretamente instaladas e teste minuciosamente em seu ambiente de desenvolvimento. Se encontrar algum problema, consulte a documentação oficial ou entre em contato com a equipe de suporte para obter assistência.
Criando CSV via API REST a partir de JSON usando cURL
Você pode obter o mesmo resultado sem escrever código PHP chamando diretamente os endpoints REST da Aspose.BarCode Cloud. O fluxo de trabalho consiste em fazer upload do arquivo JSON, gerar um código de barras para cada registro e baixar o CSV final.
- Obtenha um token de acesso (substitua os marcadores de posição pelas suas credenciais).
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"
A resposta contém access_token.
- Carregue o arquivo JSON de origem.
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
- Gerar um código de barras para um único registro (repetir para cada registro em um 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
-
Monte o arquivo CSV (você pode usar um script simples que lê o JSON enviado, insere o código de barras codificado em base64 e grava o CSV).
A etapa de montagem é realizada localmente; a API não fornece um endpoint direto de JSON‑para‑CSV. -
Baixe o CSV resultante.
curl -X GET "https://api.aspose.cloud/v3.0/barcode/storage/file/output.csv" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o data/output.csv
Para obter uma lista completa de parâmetros, veja a documentação oficial da API.
Preparando o Ambiente
Para começar a programar, você precisa de um runtime PHP (7.4 ou superior) e de uma conta válida do Aspose.BarCode Cloud.
composer require aspose-barcode-cloud
Baixe o pacote SDK na página oficial de lançamento: Aspose.BarCode Cloud SDK for PHP Download. Após a instalação, crie um arquivo config.php com seu APP_SID e APP_KEY.
Otimizando o Desempenho do Processamento de JSON Grande
- Stream o arquivo JSON - leia linha por linha em vez de carregar o arquivo inteiro na memória.
- Reutilize a instância BarCodeApi - criar um novo cliente para cada registro adiciona sobrecarga.
- Limite a resolução do código de barras - 300 dpi é suficiente para a maioria dos relatórios; valores menores reduzem o tamanho da carga útil.
- Grave linhas CSV em lotes - armazene em buffer algumas linhas antes de chamar
fputcsvpara minimizar I/O de disco.
Dicas Práticas para Conversão Eficiente de JSON para CSV
- Use um ponto e vírgula (
;) ou tabulação (\t) como delimitador quando seus dados podem conter vírgulas. - Codifique caracteres não‑ASCII com UTF‑8 e adicione um BOM (
\xEF\xBB\xBF) para compatibilidade com o Excel. - Armazene imagens de código de barras como strings Base64 dentro do CSV para manter o arquivo autocontido.
- Limpe a pasta temporária de códigos de barras após cada execução para evitar acúmulo de arquivos.
- Valide linhas JSON com
json_last_error()para ignorar registros malformados de forma elegante.
Conclusão
Este guia conduziu você por um exemplo completo de código JSON para CSV em PHP usando o Aspose.BarCode Cloud SDK for PHP. Você aprendeu como configurar o SDK, gerar códigos de barras para cada registro, lidar com delimitadores personalizados e codificação UTF‑8, e aplicar otimizações de desempenho para grandes conjuntos de dados. O SDK é um produto comercial; você pode comprar uma licença para uso em produção ou obter uma licença temporária na página de licença temporária para avaliar a biblioteca. Comece a integrar o código hoje e simplifique seus pipelines de troca de dados.
Perguntas Frequentes
P: Como o exemplo de código JSON para CSV em PHP lida com objetos aninhados?
R: Arrays ou objetos aninhados são convertidos em uma string JSON usando json_encode antes de serem gravados no CSV, garantindo que o CSV permaneça plano enquanto preserva os dados originais. Para mais detalhes, veja a Aspose.BarCode Cloud SDK for PHP documentação.
Q: Posso mudar o delimitador CSV no script JSON para CSV em PHP?
A: Sim, modifique a variável $delimiter no início do script (por exemplo, defina‑a como ',' para um arquivo separado por vírgulas). O script respeita qualquer delimitador de um único caractere que você fornecer.
Q: Existe uma maneira de processar milhares de registros JSON de forma eficiente?
A: Absolutamente. A seção de desempenho do tutorial recomenda transmitir o arquivo de entrada, reutilizar o cliente da API e gravar linhas em lotes. Essas técnicas reduzem o uso de memória e aceleram o processamento de arquivos JSON grandes.
Q: A utilidade JSON para CSV em PHP suporta outros formatos de código de barras?
A: A variável $barcodeFormat pode ser definida para qualquer simbologia suportada pelo Aspose.BarCode, como QR, DataMatrix ou Code39. Basta atualizar o valor antes de executar o script.
Leia Mais
- Salvar BarCode em formato BMP, SVG, GIF e TIFF usando Aspose.BarCode for Cloud 18.3
- Suporte ao código de barras CodablockF e leitura de código de barras a partir do corpo da requisição usando Aspose.BarCode for cloud 17.4
- Novo SDK Perl para geração e reconhecimento de códigos de barras usando as poderosas Aspose.Barcode Cloud APIs