Apabila bekerja dengan APIs moden dan perkhidmatan web, pemaju sering bertemu struktur JSON yang kompleks dengan array dan objek yang tertanam secara mendalam.Mengubah data hierarki ini ke dalam jadual Excel rata mewakili cabaran yang besar.Panduan ini menunjukkan bagaimana untuk secara berkesan menukar Array-array JSon tertakam kepada Excel menggunakan Aspose.Cells untuk .NET .
Introduction
Apabila bekerja dengan APIs moden dan perkhidmatan web, pemaju sering bertemu struktur JSON yang kompleks dengan array dan objek yang tertanam secara mendalam.Mengubah data hierarki ini ke dalam jadual Excel rata mewakili cabaran yang besar.Panduan ini menunjukkan bagaimana untuk secara berkesan menukar Array-array JSon tertakam kepada Excel menggunakan Aspose.Cells untuk .NET .
Tantangan: Struktur kompleks Nested JSON
Pertimbangkan tindak balas JSON tipikal ini daripada API web:
Menukar data hierarki ini kepada jadual Excel rata mewujudkan beberapa cabaran:
- Bagaimanakah untuk mengendalikan pelbagai kerikil ( jabatan, pekerja, kemahiran)
- Bagaimana untuk mengekalkan hubungan antara ibu bapa dan item kanak-kanak
- Bagaimana untuk mencipta struktur spreadsheet yang boleh dibaca
Penyelesaian Langkah-Langkah
Langkah 1: Instal Aspose.Cells
Pertama, anda perlu memasang Aspose.Cells untuk .NET:
dotnet add package Aspose.Cells
Langkah 2: Menetapkan JsonLayoutOptions
Mencipta konfigurasi yang betul JsonLayoutOptions
untuk mengendalikan array:
using Aspose.Cells;
using Aspose.Cells.Utility;
// Create JsonLayoutOptions with array handling
JsonLayoutOptions options = new JsonLayoutOptions();
options.ArrayAsTable = true; // Crucial for proper flattening
options.ConvertNumericOrDate = true;
options.IgnoreNull = true;
Langkah 3: muat data kompleks JSON
Muat turun data JSON yang kompleks anda:
// Sample JSON with nested arrays
string jsonData = File.ReadAllText("complex_data.json");
// Initialize workbook and worksheet
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];
Langkah 4: Mengesetkan Flattening Lanjutan
Untuk struktur yang canggih, melaksanakan penyelesaian flattening tersuai:
// Define starting cell position
int startRow = 0;
int startColumn = 0;
// Import the JSON data with our configured options
JsonUtility.ImportData(jsonData, worksheet.Cells, startRow, startColumn, options);
Langkah 5: Mengendalikan Multi-level Nested Arrays
Untuk array pelbagai peringkat yang kompleks, kami memerlukan pemprosesan tambahan:
// Create a second worksheet for detailed employee data
Worksheet employeeSheet = workbook.Worksheets.Add("Employees");
int empRow = 0;
// Add headers for the employee sheet
string[] headers = { "Department", "Employee ID", "Employee Name", "Skills" };
for (int i = 0; i < headers.Length; i++)
{
employeeSheet.Cells[empRow, i].PutValue(headers[i]);
}
empRow++;
// Parse JSON to extract and flatten employee data
// Note: This would require a JSON parsing library like Newtonsoft.Json
// JObject root = JObject.Parse(jsonData);
// foreach (var dept in root["departments"])
// {
// string deptName = dept["name"].ToString();
// foreach (var emp in dept["employees"])
// {
// employeeSheet.Cells[empRow, 0].PutValue(deptName);
// employeeSheet.Cells[empRow, 1].PutValue((int)emp["id"]);
// employeeSheet.Cells[empRow, 2].PutValue(emp["name"].ToString());
// employeeSheet.Cells[empRow, 3].PutValue(string.Join(", ", emp["skills"].ToObject<string[]>()));
// empRow++;
// }
// }
Langkah 6: Menggunakan Formatting Profesional
Meningkatkan kebolehbacaan dengan pemformatan yang betul:
// Format both worksheets as tables with headers
worksheet.ListObjects.Add(0, 0, worksheet.Cells.LastCell.Row, worksheet.Cells.LastCell.Column, true);
employeeSheet.ListObjects.Add(0, 0, empRow - 1, 3, true);
// Auto-fit columns for better readability
worksheet.AutoFitColumns();
employeeSheet.AutoFitColumns();
Langkah 7: Menyelamatkan hasil
Mengeksport buku kerja dengan data berlapis:
// Save as Excel file
workbook.Save("flattened_data.xlsx");
Penyelesaian mudah menggunakan Aspose.Cells
Untuk banyak senario, Aspose.Cells menyediakan pendekatan yang lebih mudah menggunakan pemprosesan JSON terbina dalam:
// Initialize workbook
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
// Configure JSON import options
JsonLayoutOptions options = new JsonLayoutOptions
{
ArrayAsTable = true,
ConvertNumericOrDate = true,
IgnoreNull = true,
TitleStyle = new CellsFactory().CreateStyle(),
NestedArrayAsTable = true // Important for nested arrays
};
// Set title style for better readability
options.TitleStyle.Font.IsBold = true;
// Import JSON
JsonUtility.ImportData(jsonData, sheet.Cells, 0, 0, options);
// Save result
workbook.Save("flattened_output.xlsx");
Pengetahuan utama dan amalan terbaik
- Use ArrayAsTable = true - Ini penting untuk perwakilan array yang betul
- Pertimbangkan untuk mencipta pelbagai lembaran kerja untuk data hierarki yang kompleks
- Menggunakan format untuk membuat output lebih boleh dibaca
- Menggunakan NestedArrayAsTable = benar apabila tersedia untuk pengendalian struktur nested yang lebih baik
- Untuk struktur yang sangat rumit , pertimbangkan untuk memproses JSON sebelum pengimportan
Masalah dan Penyelesaian Bersama
Issue | Solution |
---|---|
Array Nested muncul sebagai sel tunggal | Enable ArrayAsTable dan NestedArrayAsTable Pilihan |
Hubungan data hilang | Mencipta pelbagai jadual/lapisan dengan lajur hubungan |
Nama lajur tidak betul | Gunakan yang DateTimeGroupSeparator Pilihan untuk menyesuaikan nama |
Masalah memori dengan fail besar | Memproses JSON dalam kepingan atau menggunakan pendekatan streaming |