JSON-ის ჩანაწერების CSV ფორმატში გადაყვანა ხშირად საჭიროა ანგარიშგებისთვის და მონაცემთა გაცვლისთვის თანამედროვე PHP აპლიკაციებში. Aspose.BarCode Cloud SDK for PHP იძლევა ძლიერი API ბარკოდების სურათების გენერირებისთვის და ფაილების ტრანსფორმაციების დამუშავებისთვის პირდაპირ თქვენი სერვერიდან. ამ გაკვეთილში ნახავთ სრულ JSON‑დან CSV‑ზე კოდის მაგალითს PHP-ში, რომელიც ასევე ჩასვამს ბარკოდების სურათებს თითოეულ ჩანაწერში. ჩვენ გავატარებთ დაყენებას, ნაბიჯ‑ნაბიჯ განხორციელებას, cURL ალტერნატივას და შესრულების საუკეთესო პრაქტიკებს.
JSON მონაცემების CSV ფორმატში გადაყვანა PHP-ში - ნაბიჯნაბიჯ
- SDK-ის ინსტალაცია Composer-ის საშუალებით: გამოიყენეთ ოფიციალური Composer პაკეტი ბიბლიოთეკის თქვენს პროექტში დასამატებლად.
composer require aspose-barcode-cloud
- API-ის ავტორიზაციის დეტალების კონფიგურაცია და BarCodeApi-ის ინსტანსის შექმნა: შეცვალეთ
YOUR_APP_SIDდაYOUR_APP_KEYთქვენი ღრუბლოვანი ავტორიზაციის დეტალებით.
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);
მიმართვა: BarCodeApi კლასი. 3. წყაროს JSON ფაილისა და მიზნის CSV ფაილის გახსნა: სკრიპტი მუშაობს ფაილურ ნაკადებთან, რათა მეხსიერების მოხმარება იყოს მინიმალური.
$inputHandle = fopen($inputJsonPath, 'rb');
$outputHandle = fopen($outputCsvPath, 'wb');
- JSON ჩანაწერებზე ციკლი, ბარკოდების გენერირება და CSV ხაზების ჩაწერა: თითოეული ჩანაწერის
idველი გადაყვანილია ბარკოდის გამოსახულებად, რომელიც კოდირებულია base64 ფორმატში და დაემატება 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
// ...
}
- დროებით ფაილების გასუფთავება და ნაკადების დახურვა: დროებითი საქაღალდე წაიშლება დამუშავების შემდეგ.
fclose($inputHandle);
fclose($outputHandle);
array_map('unlink', glob($barcodeTempDir . '/*.png'));
rmdir($barcodeTempDir);
CSV-ის გამოტანის გენერირება JSON-დან PHP-ში - სრულყოფილი კოდის მაგალითი
შემდეგი მაგალითი აჩვენებს JSON ფაილის წაკითხვის, ბარკოდი სურათების შექმნის და მონაცემების CSV ფაილში ჩაწერის სრულ განხორციელებას, 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);
შენიშვნა: ეს კოდის მაგალითი აჩვენებს ძირითადი ფუნქციონირებას. თქვენს პროექტში მისი გამოყენებამდე, დარწმუნდით, რომ განაახლეთ ფაილის ბილიკები (
input.json,output.csv, ა.შ.) თქვენი რეალური ფაილების ადგილმდებარეობებთან, გადაამოწმეთ, რომ ყველა საჭირო დამოკიდებულება სწორად დაინსტალირებულია, და სრულად დატესტეთ თქვენი განვითარების გარემოში. თუ რაიმე პრობლემის kanssa შეხვდებით, გთხოვთ მიმართოთ ოფიციალურ დოკუმენტაციას ან დაუკავშირდეთ მხარდაჭერის გუნდს დახმარებისთვის.
CSV-ის შექმნა REST API-ით JSON‑დან cURL-ის გამოყენებით
თქვენ შეგიძლიათ მიიღოთ იგივე შედეგი PHP კოდის დაწერის გარეშე, Aspose.BarCode Cloud REST საბოლოო წერტილებს პირდაპირ გამოძახებით. სამუშაო პროცესი შედგება JSON ფაილის ატვირთვით, თითოეული ჩანაწერისთვის ბარკოდის გენერირებით და საბოლოო CSV-ის გადმოწერით.
- მიიღეთ წვდომის კოდი (შეცვალეთ ადგილმჭერები თქვენი ავტორიზაციის დეტალებით).
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"
პასუხში შედის access_token.
- ატვირთეთ წყაროს JSON ფაილი.
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
- შექმენით ბარკოდი ერთ ჩანაწერისთვის (გამეორეთ თითოეული ჩანაწერისთვის სკრიპტში).
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 ფაილის შემზადება (შეგიძლიათ გამოიყენოთ მარტივი სკრიპტი, რომელიც იკითხავს ატვირთულ JSON-ს, ჩასვამს base64‑კოდირებულ ბარკოდს და იწერს CSV-ს).
შემუშავების ნაბიჯი შესრულდება ლოკალურად; API არ სთავაზობს პირდაპირ JSON‑დან CSV‑ის endpoint-ს. -
გადმოწერეთ მიღებული 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
პარამეტრების სრულ სიას იხილეთ ოფიციალური API დოკუმენტაცია.
გარემოს მზადება
კოდირების დასაწყებად, თქვენ უნდა გაქვთ PHP-ის რენტაიმი (7.4 ან უფრო ახალი) და მოქმედ Aspose.BarCode Cloud ანგარიში.
composer require aspose-barcode-cloud
გადმოწერეთ SDK პაკეტი ოფიციალური რელიზის გვერდიდან: Aspose.BarCode Cloud SDK for PHP Download. ინსტალაციის შემდეგ, შექმენით config.php ფაილი თქვენი APP_SID და APP_KEY-ით.
დიდი JSON-ის დამუშავების შესრულების ოპტიმიზაცია
- JSON ფაილის ნაკადის გამოყენება - წაიკითხეთ ხაზზე-ხაზზე, მთელი ფაილის მეხსიერებაში ჩატვირთვის ნაცვლად.
- BarCodeApi-ის ინსტანსის თავიდან გამოყენება - თითოეული ჩანაწერისთვის ახალი კლიენტის შექმნა დამატებით დატვირთვას იწვევს.
- ბარკოდის რეზოლუციის შეზღუდვა - 300 dpi საკმარისია მეტი ანგარიშისთვის; ნაკლები მნიშვნელობები პაკეტის ზომას შემცირებს.
- CSV-ის რიგების ბატჩებში ჩაწერა - რამდენიმე რიგის ბუფერირება
fputcsv-ის გამოძახამდე დისკის I/O-ის მინიმიზაციისთვის.
პრაქტიკული რჩევები ეფექტური JSON‑დან CSV‑ში კონვერტაციისთვის
- გამოიყენეთ სემიკოლონი (
;) ან ტაბულაცია (\t) როგორც გამყოფი, როდესაც თქვენი მონაცემები შეიძლება შეიცავდეს მძიმებს. - კოდირეთ არა‑ASCII სიმბოლოები UTF‑8‑ით და დაამატეთ BOM (
\xEF\xBB\xBF) Excel‑ის თავსებადობისთვის. - შეინახეთ ბარკოდის გამოსახულებები Base64 სტრინგებად CSV‑ში, რათა ფაილი იყოს თვითმომსახურე.
- გაასუფთავეთ დროებითი ბარკოდის საქაღალდე თითოეული გაშვების შემდეგ, რათა თავიდან აიცილოთ დისკის გადავსება.
- შეამოწმეთ JSON ხაზები
json_last_error()‑ით, რათა დაზიანებული ჩანაწერებს გლუვად გამოტოვოთ.
დასკვნა
ეს გიდი გაგიყვანა სრულ JSON‑დან CSV‑მდე კოდის მაგალითის გავლით PHP-ში, Aspose.BarCode Cloud SDK for PHP-ის გამოყენებით. თქვენ გაიმარჯვენეთ, როგორ მოირგოთ SDK, როგორ შექმნათ ბარკოდები თითოეულ ჩანაწერზე, როგორ მართოთ მომხმარებლის დელიმიტერები და UTF‑8 კოდირება, და როგორ გამოიყენოთ შესრულების ოპტიმიზაციები დიდი მონაცემთა ნაკადებისთვის. SDK კომერციული პროდუქტია; შეგიძლიათ იყიდოთ ლიცენზია წარმოებისთვის ან მიიღოთ დროებითი ლიცენზია დროებითი ლიცენზიის გვერდიდან ბიბლიოთეკის შეფასებისთვის. დაიწყეთ კოდის ინტეგრირება დღესვე და გაამარტივეთ თქვენი მონაცემთა გაცვლის პაიპლაინები.
ხშირად დასმული კითხვები
Q: JSON‑დან CSV‑ის კოდის მაგალითი PHP-ში როგორ მუშაობს შენებული ობიექტებთან?
A: შენებული მასივები ან ობიექტები გადაყვანილია JSON სტრიქონში json_encode‑ის გამოყენებით, სანამ ისინი CSV-ში ჩაიწერება, რაც უზრუნველყოფს, რომ CSV ბრტყელი დარჩეს, ხოლო თავდაპირველი მონაცემები შენარჩუნდება. მეტი დეტალებისთვის იხილეთ Aspose.BarCode Cloud SDK for PHP documentation.
Q: შემიძლია JSON‑დან CSV‑ის სკრიპტში PHP-ში CSV‑ის დელიმიტერის შეცვლა?
A: დიახ, შეცვალეთ $delimiter ცვლადი სკრიპტის თავში (მაგალითად, დააყენეთ იგი ',' კომა‑განყოფილებული ფაილისთვის). სკრიპტი პატივისცემით უჭერს ნებისმიერი ერთ‑სიმბოლოს დელიმიტერს, რომელსაც თქვენ მოგვაწოდებთ.
Q: ათასი JSON ჩანაწერების ეფექტური დამუშავების გზა არსებობს?
A: აბსოლუტურად. ტუტორიის შესრულების სექციაში რეკომენდებულია შეყვანის ფაილის სტრიმინგი, API კლენტის გადამუშავება, და რიგების ბაჩებში დაწერა. ეს ტექნიკები შემცირებს მეხსიერების მოხმარებას და აჩქარებს დიდი JSON ფაილების დამუშავებას.
Q: PHP-ში JSON‑დან CSV‑მდე უტილიტა სხვა ბარკოდის ფორმატებსა მხარდაჭერას იძლევა?
A: $barcodeFormat ცვლადი შეიძლება დაყენდეს ნებისმიერი სიმბოლოთი, რომელიც მხარდაჭერილია Aspose.BarCode-ის მიერ, მაგალითად QR, DataMatrix ან Code39. უბრალოდ განაახლეთ მნიშვნელობა სკრიპტის გაშვებამდე.
მეტი
- BarCode-ის შენახვა BMP, SVG, GIF და TIFF ფორმატებში Aspose.BarCode for Cloud 18.3-ის გამოყენებით
- CodablockF ბარკოდის მხარდაჭერა და ბარკოდის წაკითხვა მოთხოვნის სხეულიდან Aspose.BarCode for cloud 17.4-ის გამოყენებით
- ახალი Perl SDK ბარკოდის გენერაციისა და აღიარებისთვის ძლიერი Aspose.Barcode Cloud API-ების გამოყენებით