Как да десертирате 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 предлага различни методи за десертизация:
| Method | Input | Изход | Използване на случая |
|---|---|---|---|
Deserialize | Стъпка JSON | Dataset? | Единен набор от данни от JSON |
DeserializeFile | Стъпка JSON | DicomFile? | Запълнете файла с мета-информация |
DeserializeList | JSON 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.