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

IssueSolution
Nested arrays parādās kā vienādas šūnasEnable ArrayAsTable un NestedArrayAsTable Opcijas
Datu attiecības tiek zaudētasIzveidojiet vairākas tabulas / shēmas ar attiecību kolonnām
Kolonnas nosaukumi ir nepareiziIzmantojiet DateTimeGroupSeparator Iespēja personalizēt nosaukumu
Atmiņas problēmas ar lieliem failiemPārstrādājiet JSON gabalos vai izmantojiet streamu pieeju

More in this category