Wie Deserialisieren Sie DICOM JSON zurück zu Dataset oder DicomFile

Wie Deserialisieren Sie DICOM JSON zurück zu Dataset oder DicomFile

Dieses Tutorial zeigt, wie man DICOM JSON zurück zu Dataset oder DicomFile Objekte mit C#. Diese Fähigkeit ist unerlässlich, wenn Sie die Daten von DIKOM von J SON, die in Datenbanken gespeichert oder von Web APIs empfangen werden, rekonstruieren müssen.

Vorteile der JSON Deserialisierung

  • • Datenrekonstruktion *:- Wiederherstellen von DICOM-Dateien aus JSON, die in Datenbanken gespeichert sind.

  • • API Integration *:- Die DICOM-Daten werden als JSON aus Webdienste verarbeitet.

    • Round-Trip Verarbeitung*- Serialisieren Sie auf JSON, ändern Sie und dann wieder auf DICOM.

Voraussetzungen: Umwelt vorbereiten

  • Installieren Sie Visual Studio oder eine kompatible .NET IDE.
  • Erstellen Sie ein neues .NET 8-Konsole-Anwendungsprojekt.
  • Installieren Sie Aspose.Medical vom NuGet Package Manager.

Verständnis der Deserialisierungsoptionen

Der DicomJsonSerializer bietet verschiedene Deserialisierungsmethoden an:

MethodeInputAusgangGebrauchsfall
DeserializeJSON StringDataset?Einzigartige Datensätze von JSON
DeserializeFileJSON StringDicomFile?Komplete DICOM Datei mit Meta-Info
DeserializeListJSON Array StringDataset[]?Mehrere Datensätze von JSON Array

Schritt für Schritt Guide zur Deserialisierung von DICOM JSON

Schritt 1: Installieren Aspose.Medical

Fügen Sie die Aspose.Medical Bibliothek zu Ihrem Projekt mit NuGet hinzu.

Install-Package Aspose.Medical

Schritt 2: Inkludieren Sie notwendige Namenräume

Fügen Sie Referenzen zu den erforderlichen Namenräumen in Ihrem Code hinzu.

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

Schritt 3: Lesen Sie JSON-Content

Lesen Sie die JSON-Inhalte aus einem Datei oder einer Variable.

string jsonText = File.ReadAllText("patient_scan.json");

Schritt 4: Deserialisieren zum Dataset

Use Deserialize Um ein Dataset-Objekt zu rekonstruieren.

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

Schritt 5: Arbeiten mit dem Dataset

Zugang und Manipulation des rekonstruierten Datensatzes.

if (dataset != null)
{
    Console.WriteLine("Dataset successfully reconstructed from JSON.");
    // Work with the dataset...
}

Schritt 6: Sparen Sie zurück zu DICOM (optional)

Erstellen Sie ein neues DicomFile und speichern Sie es auf den Disk.

if (dataset != null)
{
    DicomFile newDcm = new DicomFile(dataset);
    newDcm.Save("reconstructed.dcm");
}

Komplete Code Beispiel: Deserialize Single Dataset

Hier ist ein vollständiges Beispiel, das zeigt, wie man ein einzelnes Datensatz deserialisiert:

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.");
}

Deserialisierung Complete DicomFile

Wenn Ihr JSON Datei-Meta-Informationen enthält, verwenden Sie 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");
}

Deserialisieren JSON Array zu mehreren Datensätzen

Wenn Sie mit JSON arbeiten, enthalten sie mehrere Datensätze:

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 Beispiel: Serialize, Modify, Deserialize

Ein allgemeines Gebrauchsfall ist die Änderung von DICOM-Daten über 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");
}

Arbeiten mit Database Storage

Deserialize DICOM JSON von einer Datenbank erfasst:

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 Deserialisierung für Web-Anwendungen

Für ASP.NET Core-Anwendungen verwenden Sie 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

Verarbeitung von malformierten JSON

Machen Sie immer die Deserialisierung in try-catch Blocks:

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}");
}

Verarbeitung von Truncated JSON

Für große JSON-Dateien stellen Sie sicher, dass vollständige Inhalte gelesen werden:

// 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.");
}

Version Kompatibilität

Stellen Sie sicher, dass der JSON mit einer kompatiblen Version des Serialisers generiert wurde. Missverständliche Versionen können zu Deserialisierungsfehlern führen.

Zusätzliche Informationen

  • Deserialisierte Datensätze enthalten keine Pixel-Daten, es sei denn, sie sind in den ursprünglichen JSON eingebaut.
  • Für die Produktionsanwendung implementieren Sie vor der Deserialisierung eine geeignete Validierung von JSON-Einnahmen.
  • Betrachten Sie das Caching deserialisierter Datensätze für häufig zugängliche Daten.

Schlussfolgerungen

Dieses Tutorial hat gezeigt, wie man DICOM JSON zurück zu Dataset oder DicomFile Objekte in C# mit Aspose.Medical dezerialisieren kann.Diese Fähigkeit ermöglicht Runde-Trip DicOM-Datenverarbeitung und Seamless-Integration mit jSON-basierten Speicher- und API-Systemen.

 Deutsch