Как да десертирате DICOM JSON обратно към Dataset или DicomFile

Как да десертирате DICOM JSON обратно към Dataset или DicomFile

Този урок показва как да детерилизирате DICOM JSON обратно към Dataset или DicomFile обекти, като използвате C#. Тази способност е от съществено значение, когато трябва да реконструирате данни на DIKOM от jSON, съхранени в бази данни или получени от уеб APIs.

Предимства на JSON Deserialization

    • Възстановяване на данни *:- Възстановяване на DICOM файлове от JSON, съхранявани в бази данни.
    • Интеграция на API*- Процес DICOM данни, получени като JSON от уеб услуги.
  • ** Продукти за обработка на маршрути**:- Сериализирайте се с JSON, модифицирайте, а след това се десерлизирате обратно към DICOM.

Предимства: Подготвяне на околната среда

  • Visual Studio или всяка съвместима .NET IDE.
  • Създаване на нов проект за .NET 8 конзола.
  • Инсталирайте Aspose.Medical от NuGet Package Manager.

Разбиране на опциите за дезориентация

DicomJsonSerializer предлага различни методи за десертизация:

MethodInputИзходИзползване на случая
DeserializeСтъпка JSONDataset?Единен набор от данни от JSON
DeserializeFileСтъпка JSONDicomFile?Запълнете файла с мета-информация
DeserializeListJSON Array СтрийDataset[]?Многобройни файлове от JSON Array

Стъпка по стъпка ръководство за дезериализиране на DICOM JSON

Стъпка 1: Инсталирайте Aspose.Medical

Добавете библиотеката Aspose.Medical към вашия проект с помощта на NuGet.

Install-Package Aspose.Medical

Стъпка 2: Включете необходимите имена

Добавете препратки към необходимите имена в кода си.

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

Стъпка 3: Прочетете JSON съдържание

Прочетете съдържанието на JSON от файл или променлива.

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

Стъпка 4: Детериализиране към Dataset

Използване Deserialize Изграждане на обект с данни.

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

Стъпка 5: Работа с базата данни

Достъп и манипулиране на реконструирания набор от данни.

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

Стъпка 6: Спестете обратно към DICOM (опционално)

Създайте нов DicomFile и съхранявайте на диска.

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

Допълнителен код Пример: Deserialize Single Dataset

Ето един пълен пример, който показва как да се детерилизира един набор от данни:

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

Изтегляне на Complete DicomFile

Когато JSON включва мета информация за файла, използвайте 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");
}

Детериализиране на JSON Array към множество файлове

При работа с JSON се изчерпват, съдържащи няколко набора данни:

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

Пример за кръг: Serialize, Modify, Deserialize

Едно общо използване е модифицирането на DICOM данни чрез 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");
}

Работа с бази данни съхранение

Deserialize DICOM JSON събрани от база данни:

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 Deserialization за уеб приложения

За ASP.NET Core приложения, използвайте методите на асинк:

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

Премахване на злонамерен JSON

Винаги вградете детериализацията в try-catch блокове:

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

Изтегляне на JSON

За големи JSON файлове, уверете се, че цялото съдържание се чете:

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

Версия съвместимост

Уверете се, че JSON е генериран с съвместима версия на сериализатора. Несъответстващи версии могат да причинят неуспехи в дезориентацията.

Допълнителна информация

  • Детериализираните данни не включват пикселни данни, освен ако не са вградени в оригиналния JSON.
  • За използване на производството, прилагайте правилната валидация на JSON вноса преди десертизация.
  • Помислете за кеширане на десертирани данни за често достъпни данни.

заключение

Този урок е показал как да се детерилизира DICOM JSON обратно към Dataset или DicomFile обекти в C# с помощта на Aspose.Medical. Тази способност позволява кръгла обработка на данни ДИКОМ и безпристрастна интеграция с системи за съхранение и API базирани на jSON.

 Български