Ako dezerializovať DICOM JSON späť na Dataset alebo DicomFile
Tento tutoriál ukazuje, ako dezerializovať DICOM JSON späť na Dataset alebo DicomFile objekty pomocou C#. Táto schopnosť je nevyhnutná, keď potrebujete rekonštruovať dáta DicOM z JSon uložené v databázach alebo prijaté z web APIs.
Výhody JSON deserializácie
- Rekonštrukcia údajov *:- Obnovte súbory DICOM z JSON uložené v databázach.
• Integrovanie API:- DICOM údaje získané ako JSON z webových služieb.
** Round-Trip spracovanie**:- Serializovať na JSON, modifikovať, a potom deserialize späť na DICOM.
Predpoklady: Príprava životného prostredia
- Nastaviť Visual Studio alebo akýkoľvek kompatibilný .NET IDE.
- Vytvorte nový projekt aplikácie .NET 8 konzoly.
- Inštalovať Aspose.Medical z NuGet Package Manager.
Zoznámenie s možnosťami deserializácie
DicomJsonSerializer poskytuje rôzne metódy deseralizácie:
| Method | Input | Výstup | Použitie prípadu |
|---|---|---|---|
Deserialize | JSON štruktúra | Dataset? | Jednotlivé databázy od JSON |
DeserializeFile | JSON štruktúra | DicomFile? | Kompletné DICOM súbor s meta info |
DeserializeList | JSON array prúžok | Dataset[]? | Multiple datasets od JSON array |
Krok za krokom návod na deserializáciu DICOM JSON
Krok 1: Inštalácia Aspose.Medical
Pridajte do projektu Aspose.Medicínska knižnica pomocou NuGet.
Install-Package Aspose.MedicalKrok 2: Vložte potrebné názvové priestory
Pridajte odkazy na požadované názvové priestory vo vašom kóde.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;Krok 3: Prečítajte si JSON obsah
Prečítajte si obsah JSON z súboru alebo variable.
string jsonText = File.ReadAllText("patient_scan.json");Krok 4: Deserializovať na Dataset
Použitie Deserialize na rekonštrukciu objektu Dataset.
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);Krok 5: Práca s datasetom
Prístup a manipulácia s rekonštruovanou databázou.
if (dataset != null)
{
Console.WriteLine("Dataset successfully reconstructed from JSON.");
// Work with the dataset...
}Krok 6: Uložiť späť na DICOM (voliteľné)
Vytvorte nový DicomFile a uložte ho na disk.
if (dataset != null)
{
DicomFile newDcm = new DicomFile(dataset);
newDcm.Save("reconstructed.dcm");
}Kompletný príklad kódu: Deserialize Single Dataset
Tu je úplný príklad, ktorý ukazuje, ako dezerializovať jeden súbor údajov:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
// Read JSON from file
string jsonText = File.ReadAllText("patient_scan.json");
// Deserialize to Dataset
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);
if (dataset != null)
{
Console.WriteLine("Dataset successfully deserialized!");
// Create a new DicomFile with the dataset
DicomFile newDcm = new DicomFile(dataset);
// Save to DICOM format
newDcm.Save("reconstructed_scan.dcm");
Console.WriteLine("Saved to reconstructed_scan.dcm");
}
else
{
Console.WriteLine("Failed to deserialize JSON.");
}Deserializovať kompletné DicomFile
Keď vaše JSON obsahuje meta informácie súboru, používať DeserializeFile:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
// Read JSON that includes file meta information
string jsonFileText = File.ReadAllText("complete_dicom.json");
// Deserialize to complete DicomFile
DicomFile? dicomFile = DicomJsonSerializer.DeserializeFile(jsonFileText);
if (dicomFile != null)
{
Console.WriteLine("DicomFile successfully deserialized!");
dicomFile.Save("reconstructed_complete.dcm");
}Deserializovať JSON Array na viaceré dátové súbory
Pri práci s JSON radia obsahujúce viaceré databázy:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
// Read JSON array
string jsonArrayText = File.ReadAllText("multiple_studies.json");
// Deserialize to Dataset array
Dataset[]? datasets = DicomJsonSerializer.DeserializeList(jsonArrayText);
if (datasets != null)
{
Console.WriteLine($"Deserialized {datasets.Length} datasets.");
// Save each dataset as a separate DICOM file
for (int i = 0; i < datasets.Length; i++)
{
DicomFile dcm = new DicomFile(datasets[i]);
dcm.Save($"study_{i:D3}.dcm");
}
Console.WriteLine("All datasets saved successfully!");
}Round-Trip Príklad: Serializovať, zmeniť, deserialize
Jedným z najčastejších prípadov používania je úprava údajov DICOM prostredníctvom JSON:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json;
// Load original DICOM file
DicomFile original = DicomFile.Open("original.dcm");
// Serialize to JSON
string json = DicomJsonSerializer.Serialize(original, writeIndented: true);
// Parse JSON for modification (using System.Text.Json)
using JsonDocument doc = JsonDocument.Parse(json);
// ... modify JSON as needed ...
// Deserialize back to Dataset
Dataset? modifiedDataset = DicomJsonSerializer.Deserialize(json);
if (modifiedDataset != null)
{
DicomFile modifiedDcm = new DicomFile(modifiedDataset);
modifiedDcm.Save("modified.dcm");
}Práca s databázovým úložiskom
Deserialize DICOM JSON získané z databázy:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
// Simulating retrieval from database
string jsonFromDatabase = GetDicomJsonFromDatabase("patient_123");
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonFromDatabase);
if (dataset != null)
{
// Process the reconstructed dataset
DicomFile dcm = new DicomFile(dataset);
dcm.Save("from_database.dcm");
Console.WriteLine("DICOM file reconstructed from database JSON.");
}
// Simulated database retrieval method
string GetDicomJsonFromDatabase(string patientId)
{
// In real implementation, this would query your database
return File.ReadAllText($"database_cache/{patientId}.json");
}Async Deserializácia pre webové aplikácie
Pre aplikácie ASP.NET Core použite metódy async:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
// Async deserialization from stream
public async Task<Dataset?> DeserializeFromStreamAsync(Stream jsonStream)
{
Dataset? dataset = await DicomJsonSerializer.DeserializeAsync(jsonStream);
return dataset;
}
// Usage in ASP.NET Core controller
[HttpPost("import")]
public async Task<IActionResult> ImportDicomJson()
{
Dataset? dataset = await DicomJsonSerializer.DeserializeAsync(Request.Body);
if (dataset != null)
{
// Process the dataset
return Ok("DICOM data imported successfully");
}
return BadRequest("Invalid DICOM JSON");
}Troubleshooting
Vykonávanie malformovaného JSON
Vždy vložte deserializáciu do try-catch blokov:
try
{
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);
if (dataset == null)
{
Console.WriteLine("Deserialization returned null - check JSON format.");
}
}
catch (JsonException ex)
{
Console.WriteLine($"JSON parsing error: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"Deserialization error: {ex.Message}");
}Spracovanie Truncated JSON
Pre veľké súbory JSON, uistite sa, že kompletný obsah je čítaný:
// Use ReadAllText for complete file content
string completeJson = File.ReadAllText("large_dicom.json");
// Verify JSON is complete (basic check)
if (!completeJson.TrimEnd().EndsWith("}") && !completeJson.TrimEnd().EndsWith("]"))
{
Console.WriteLine("Warning: JSON may be truncated.");
}verzia kompatibilita
Uistite sa, že JSON bol generovaný s kompatibilnou verziou serializátora. nesúladné verzie môžu spôsobiť zlyhanie deserializácie.
Dodatočné informácie
- Deserializované datasety nezahŕňajú pixelové údaje, pokiaľ neboli vložené do pôvodného JSON.
- Pre výrobné použitie, vykonajte správnu validáciu JSON vstupu pred deserializáciou.
- Vezmite do úvahy caching deserializovaných databáz pre často prístupné údaje.
Záver
Tento tutoriál ukázal, ako dezerializovať DICOM JSON späť na Dataset alebo DicomFile objekty v C# pomocou Aspose.Medical. Táto schopnosť umožňuje obdĺžnikové spracovanie údajov a bezdrôtovú integráciu so systémami ukladania a API založenými na jSON.