Jak deserializovat DICOM JSON zpět do dataset nebo DicomFile

Jak deserializovat DICOM JSON zpět do dataset nebo DicomFile

Tento tutoriál ukazuje, jak deserializovat DICOM JSON zpět do Dataset nebo DicomFile objekty pomocí C#. Tato schopnost je nezbytná, když potřebujete rekonstruovat data DIKOM z J SON uložených v databázích nebo přijatých z web APIs.

Výhody deserializace JSON

  • • Rekonstrukce dat:- Obnovte DICOM soubory z JSON uložené v databázích.

  • • Integrace API:- DICOM zpracovává data získaná jako JSON z webových služeb.

    • Zpracování kruhových zájezdů:- Serializujte se na JSON, modifikujte, a poté deserialize zpět na DICOM.

Předpoklady: Příprava životního prostředí

  • Nastavení Visual Studio nebo jakéhokoli kompatibilního .NET IDE.
  • Vytvořte nový projekt aplikace .NET 8 konzole.
  • Instalace aplikace Aspose.Medical z programu NuGet Package Manager.

Rozumět možnosti deserializace

DicomJsonSerializer poskytuje různé metody deseralizace:

MetodaInputVýstupPoužití případu
DeserializeJSON StringováDataset?Jednotlivé databáze od JSON
DeserializeFileJSON StringováDicomFile?Kompletní DICOM soubor s meta info
DeserializeListJSON Array řetězecDataset[]?Množství dat z JSON array

Krok za krokem průvodce k deserializace DICOM JSON

Krok 1: Instalace Aspose.Medical

Přidejte do svého projektu knihovnu Aspose.Medicine pomocí aplikace NuGet.

Install-Package Aspose.Medical

Krok 2: Vložte potřebné názevové prostory

Přidejte odkazy na požadované názevové prostory ve vašem kódu.

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

Krok 3: Přečtěte si JSON obsah

Přečtěte si obsah JSON z souboru nebo proměnné.

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

Krok 4: Deserializace na dataset

Použití Deserialize Připravte si datasetový objekt.

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

Krok 5: Práce s datasetem

Přístup a manipulace s rekonstruovaným datovým souborem.

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

Krok 6: Shromažďovat zpět na DICOM (volitelné)

Vytvořte nový DicomFile a uložte na disk.

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

Kompletní příklad kódu: Deserialize Single Dataset

Zde je kompletní příklad, který ukazuje, jak dezerializovat jediný soubor dat:

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

Deserializace Complete DicomFile

Když vaše JSON obsahuje meta informace souboru, použijte 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");
}

Deserializujte JSON Array na více datových setů

Při práci s JSON radí obsahující více datových souborů:

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

Původní název: Serialize, Modify, Deserialize

Jedním z nejčastějších případů je změna dat DICOM prostřednictvím 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áce s databázovým ukládáním

Deserialize DICOM JSON získané z databáze:

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 Deserializace pro webové aplikace

Pro aplikace ASP.NET Core použijte metody 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

Následující Článek Zneužití JSON

Vždy vložte deserializace do try-catch bloků:

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

Zpracování Truncated JSON

U velkých souborů JSON se ujistěte, že kompletní obsah je přečten:

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

Kompatibilita verze

Ujistěte se, že JSON byl generován s kompatibilní verzí serializátoru. neslučitelné verze mohou způsobit poruchy deserializace.

Další informace

  • Deserializované databáze nezahrnují pixelové údaje, ledaže byly vestavěny do původního JSON.
  • Pro výrobní použití provádějte správnou validaci JSON vstupu před deserializací.
  • Vezměte v úvahu caching deserializovaných datových souborů pro často přístupné údaje.

závěr

Tento tutoriál ukázal, jak deserializovat DICOM JSON zpět do Dataset nebo DicomFile objektů v C# pomocí Aspose.Medical. Tato schopnost umožňuje průběžné zpracování dat a bezdrátovou integraci s Json-založeným ukládáním a systémy API.

 Čeština