Darbojoties ar mūsdienu APIs un tīmekļa pakalpojumiem, izstrādātāji bieži vien saskaras ar sarežģītām JSON struktūrām ar dziļi nestāstītiem saknēm un objektiem. Konvertējot šos hierarhijas datus uz platām Excel tabulām, ir būtisks izaicinājums. Šis ceļvedis parāda, kā efektīvi konvertēt nestās jSON saknes uz Excel, izmantojot Aspose.Cells for .NET .
Introduction
Darbojoties ar mūsdienu APIs un tīmekļa pakalpojumiem, izstrādātāji bieži vien saskaras ar sarežģītām JSON struktūrām ar dziļi nestāstītiem saknēm un objektiem. Konvertējot šos hierarhijas datus uz platām Excel tabulām, ir būtisks izaicinājums. Šis ceļvedis parāda, kā efektīvi konvertēt nestās jSON saknes uz Excel, izmantojot Aspose.Cells for .NET .
Izteikums: komplekss Nested JSON struktūras
Apsveriet šo tipisko JSON atbildi no tīmekļa API:
Konvertējot šos hierarhijas datus uz plānu Excel tabulu, rodas vairāki izaicinājumi:
- Kā tikt galā ar vairākiem nestāstiem (departamenti, darbinieki, prasmes)
- Kā uzturēt attiecības starp vecākiem un bērna priekšmetiem
- Kā izveidot izlases lapu struktūru
Step-by-step risinājums
1. solis: Uzstādīt Aspose.Cells
Pirmkārt, instalējiet Aspose.Cells .NET:
dotnet add package Aspose.Cells
2. solis: Iestatīt JsonLayoutOptions
Izveido pareizi konfigurētu JsonLayoutOptions
Kā rīkoties ar arēniem:
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;
3. solis: uzlādēt JSON datu komplektu
Lejupielādējiet savus sarežģītos JSON datus:
// 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];
4. solis: iestatīt paplašinātu plūsmu
Lai attīstītos nestāsti struktūras, ievieš pielāgotus flīzes risinājumus:
// 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);
5. solis: Multi-level Nested Arrays apstrāde
Kompleksā daudzlīmeņu raķešu gadījumā mums ir nepieciešama papildu apstrāde:
// 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++;
// }
// }
6. solis: Pielietot profesionālu formātu
Palielināt lasamību ar pareizu formātu:
// 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();
7. solis: ietaupīt rezultātu
Izveidojiet darba grāmatu ar plātinātiem datiem:
// Save as Excel file
workbook.Save("flattened_data.xlsx");
Vienkāršs risinājums, izmantojot Aspose.Cells
Daudzos scenārijos Aspose.Cells nodrošina vienkāršāku pieeju, izmantojot savu iebūvēto JSON apstrādi:
// 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");
Galvenās iezīmes un labākās prakses
- Use ArrayAsTable = true - Tas ir svarīgi pareizai arēnu pārstāvībai
- Rūpējas par vairāku darba lapu izveidi sarežģītiem hierarhijas datiem
- ** Pielietojiet formātu** , lai rezultāts būtu lasāms
- Use NestedArrayAsTable = true , ja tas ir pieejams, lai labāk apstrādātu nested struktūras
- Par ļoti sarežģītām struktūrām , pirms importēšanas apsveriet JSON priekšapstrādi
Kopīgas problēmas un risinājumi
Issue | Solution |
---|---|
Nested arrays parādās kā vienādas šūnas | Enable ArrayAsTable un NestedArrayAsTable Opcijas |
Datu attiecības tiek zaudētas | Izveidojiet vairākas tabulas / shēmas ar attiecību kolonnām |
Kolonnas nosaukumi ir nepareizi | Izmantojiet DateTimeGroupSeparator Iespēja personalizēt nosaukumu |
Atmiņas problēmas ar lieliem failiem | Pārstrādājiet JSON gabalos vai izmantojiet streamu pieeju |