Како десеријализовати ДИКОМ ЈСОН назад на Датасет или ДикомФиле

Како десеријализовати ДИКОМ ЈСОН назад на Датасет или ДикомФиле

Овај туториал показује како да детерилише ДИЦОМ ЈСОН назад у Датасет или ДицомФиле објекте користећи Ц#. Ова способност је од суштинског значаја када морате да реконструишете податке из ЈСОН складиштене у базама података или примљене из веб АПИ-а.

Prednosti JSON deserialization

    • Реконструкција података *:- Obnavljajte DICOM datoteke iz JSON pohranjene u bazama podataka.
    • Интеграција АПИ *:- Обрада ДИЦОМ података примљених као ЈСОН од веб услуга.
    • Пројекат кружног обраде *:- Серијалише се на ЈСОН, модификује се, а затим се десериалише назад на ДИКОМ.

Принципи: Припрема за животну средину

  • Инсталирајте Visual Studio или било који компатибилан .NET IDE.
  • Креирање новог .NET 8 апликационог пројекта конзоле.
  • Инсталирајте Aspose.Medical из менаџера пакета NuGet.

Razumevanje opcija deserializovanja

ДикомЈсонСеријализатор пружа различите методе десерјализације:

MethodInputизлазКоришћење случаја
DeserializeЈСОН СтрингDataset?Јединствени сет података из JSON-а
DeserializeFileЈСОН СтрингDicomFile?Потпуно ДИКОМ датотеку са мета инфо
DeserializeListJSON Ареј СтрингDataset[]?Mnogobrojni podaci iz JSON array

Корак по корак водич за десерјализацију Диком ЈСОН

Корак 1: Инсталирајте Aspose.Medical

Додајте Аппосе.Медицинска библиотека у свој пројекат користећи НуГет.

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: Десеријализација на датотеку

Коришћење Deserialize Да би се реконструисао објекат Датасета.

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

Корак 5: Радите са датотеком

Приступ и манипулисање реконструисаним датотекама.

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

Корак 6: Сачувати назад на DICOM (опционално)

Kreirajte novi DicomFile i sačuvajte na disku.

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

Пример комплетног кода: Десеријализација јединственог датотеке

Ево комплетног примера који показује како детерилизовати једну скуп података:

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

Десеријализација комплетног дикомфиле

Када ваш 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");
}

Deserializuje JSON Array na više setova podataka

Приликом рада са ЈСОН-ом се налазе који садрже више сетова података:

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

Пример кружног путовања: серијализација, модификовање, десеријализација

Уобичајени случај коришћења је модификовање ДИКОМ података кроз ЈСОН:

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 за веб апликације

За АСП.НЕТ Цоре апликације, користите методе асинц:

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

Управљање злостављеним ЈСОН

Увек заварити дезерјализацију у три-цацх блоковима:

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

Руте у Truncated 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 улаза пре десерјализације.
  • Размислите о кеширању детеријализованих сетова података за често приступајуће податке.

Закључак

Овај туториал је показао како да се детериализује ДИЦОМ ЈСОН назад на Датасет или ДицомФиле објекте у Ц# користећи Аппосе.Медикал. Ова способност омогућава кружно обраду података и беспрекорно интегрисање са системом складиштења и АПИ-а заснованим на ЈСОН-у.

 Српски