Hoe te Deserialiseren DICOM JSON terug naar Dataset of DicomFile

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:

MethodInputUitgangGebruik Case
DeserializeDe JSON StringDataset?Eenvoudig dataset van JSON
DeserializeFileDe JSON StringDicomFile?Complete DICOM bestand met meta info
DeserializeListJSON array stringDataset[]?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.Medical

Stap 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.

 Nederlands