Hoe te Deserialiseren DICOM JSON terug naar Dataset of DicomFile
Dit tutorial toont aan hoe om DICOM JSON terug te deserialiseren naar Dataset of DicomFile objecten met behulp van C#. Deze capaciteit is essentieel wanneer u nodig hebt om te reconstructeren DIKOM-gegevens van jSON opgeslagen in databases of ontvangen van web APIs.
De voordelen van JSON Deserialisatie
- Data herstructurering * :- Herstellen van DICOM-bestanden van JSON opgeslagen in databases.
• API integratie *:- Verwerking DICOM gegevens ontvangen als JSON van webdiensten.
- Round-Trip verwerking *- Serialiseren naar JSON, wijzigen, en vervolgens deserialiteren terug naar DICOM.
Voorwaarden: het voorbereiden van het milieu
- Installeer Visual Studio of een compatibele .NET IDE.
- Maak een nieuw .NET 8 console-applicatieproject.
- Installeer Aspose.Medical vanaf de NuGet Package Manager.
Ontdek de deserialisatie opties
De DicomJsonSerializer biedt verschillende deserialiseringsmethoden:
| Method | Input | Uitgang | Gebruik Case |
|---|---|---|---|
Deserialize | De JSON String | Dataset? | Eenvoudig dataset van JSON |
DeserializeFile | De JSON String | DicomFile? | Complete DICOM bestand met meta info |
DeserializeList | JSON array string | Dataset[]? | Multiple datasets van JSON array |
Step-by-step gids voor het deserialiseren van DICOM JSON
Stap 1: Installeer Aspose.Medical
Voeg de Aspose.Medische bibliotheek toe aan uw project met behulp van NuGet.
Install-Package Aspose.MedicalStap 2: Inkluderen van noodzakelijke naamruimten
Voeg verwijzingen toe aan de vereiste naamruimten in uw code.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;Stap 3: Lees JSON Content
Lees de JSON-inhoud van een bestand of variabele.
string jsonText = File.ReadAllText("patient_scan.json");Stap 4: Deserialiseren naar Dataset
Gebruik Deserialize Om een dataset object te herstellen.
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);Stap 5: Werken met de Dataset
Toegang en manipulatie van de herbouwde dataset.
if (dataset != null)
{
Console.WriteLine("Dataset successfully reconstructed from JSON.");
// Work with the dataset...
}Stap 6: Save Back to DICOM (optional)
Creëer een nieuwe DicomFile en bewaar het op de schijf.
if (dataset != null)
{
DicomFile newDcm = new DicomFile(dataset);
newDcm.Save("reconstructed.dcm");
}Complete code voorbeeld: Deserialize Single Dataset
Hier is een complete voorbeeld om te tonen hoe je een enkel dataset kunt deserialiseren:
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.");
}Deserialiseren Complete DicomFile
Wanneer uw JSON met meta-informatie invoert, gebruik 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");
}Deserialiseren JSON Array naar meerdere datasets
Bij het werken met JSON raden die meerdere datasets bevatten:
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 voorbeeld: Serialize, Modify, Deserialize
Een gebruikelijk geval is het wijzigen van DICOM-gegevens via 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");
}Werken met Database Storage
Deserialize DICOM JSON verkregen uit een database:
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 Deserialisatie voor Web Applicaties
Voor ASP.NET Core-toepassingen, gebruik de async-methoden:
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
Het verwerken van misvormde JSON
Altijd wrap deserialisatie in try-catch blokken:
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}");
}Handelen Truncated JSON
Voor grote JSON-bestanden, zorg ervoor dat volledige inhoud wordt gelezen:
// 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.");
}Versie compatibiliteit
Zorg ervoor dat de JSON is gegenereerd met een compatibele versie van de serialisator. mismatige versies kunnen deserialisatiefalen veroorzaken.
Aanvullende informatie
- Deseriale datasets bevatten geen pixelgegevens tenzij deze in de oorspronkelijke JSON zijn opgenomen.
- Voor het gebruik van de productie moet u de juiste validatie van JSON-invoer voorafgaand aan de deserialisering uitvoeren.
- Overweeg het caching van deseriale dataset voor vaak toegankelijke gegevens.
Conclusie
Deze tutorial heeft aangetoond hoe om DICOM JSON terug te deserialiseren naar Dataset of DicomFile objecten in C# met behulp van Aspose.Medical. Deze capaciteit maakt het mogelijk om rond te gaan met de gegevensverwerking en onbeperkte integratie met op Json gebaseerde opslag en API-systemen.