המרת רשומות 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);
Reference: מחלקת 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, וכו’) כך שיתאימו למיקומי הקבצים האמיתיים שלך, מאמת שכל התלויות הנדרשות מותקנות כראוי, ובודק באופן יסודי בסביבת הפיתוח שלך. אם אתה נתקל בבעיות, אנא עיין בתיעוד הרשמי או פנה לצוות התמיכה לקבלת עזרה.
יצירת 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. -
הורד את קובץ ה‑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 הורדה. לאחר ההתקנה, צרו קובץ 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: האם אני יכול לשנות את המפריד של CSV בסקריפט JSON ל‑CSV ב‑PHP?
A: כן, שנה את המשתנה $delimiter בראש הסקריפט (למשל, הגדר אותו ל-',' עבור קובץ מופרד בפסיקים). הסקריפט מכבד כל מפריד בעל תו יחיד שתספק.
Q: האם יש דרך לעבד אלפי רשומות JSON ביעילות?
A: בהחלט. סעיף הביצועים במדריך ממליץ על זרימת קובץ הקלט, שימוש חוזר בלקוח ה-API, וכתיבת שורות במנות. טכניקות אלו מצמצמות את השימוש בזיכרון ומאיצות את העיבוד של קבצי JSON גדולים.
ש: האם כלי ה-JSON ל-CSV ב-PHP תומך בפורמטים אחרים של ברקוד?
ת: המשתנה $barcodeFormat ניתן להגדיר לכל סימבוליה הנתמכת על ידי Aspose.BarCode, כגון QR, DataMatrix, או Code39. פשוט עדכן את הערך לפני הרצת הסקריפט.