چگونه DICOM JSON را به Dataset یا DicomFile بازگردانیم
این راهنمای نشان می دهد که چگونه DICOM JSON را با استفاده از C# به اشیاء Dataset یا DicomFile بازگردانید.این قابلیت ضروری است زمانی که شما نیاز به بازسازی داده های دیکوم از Json ذخیره شده در پایگاه داده ها یا دریافت شده از API های وب دارید.
مزایای JSON Deserialization
** بازسازی داده ها** :- بازگرداندن فایل های DICOM از JSON ذخیره شده در پایگاه داده.
تولید API :- پردازش داده های DICOM دریافت شده به عنوان JSON از خدمات وب.
*تجزیه و تحلیل مسیر گرد :- به JSON سریالی کنید، آن را تغییر دهید و سپس به DICOM بازگردید.
برچسب ها: آماده سازی محیط زیست
- Visual Studio یا هر IDE .NET سازگار را نصب کنید.
- ایجاد یک برنامه جدید .NET 8 کنسول.
- نصب Aspose.Medical از NuGet Package Manager.
آشنایی با گزینه های Deserialization
DicomJsonSerializer روش های مختلف تخلیه را ارائه می دهد:
| روش | Input | خروج | مورد استفاده |
|---|---|---|---|
Deserialize | دانلود JSON String | Dataset? | مجموعه ای از داده های JSON |
DeserializeFile | دانلود JSON String | DicomFile? | تکمیل فایل DICOM با اطلاعات متا |
DeserializeList | JSON آرری string | Dataset[]? | مجموعه داده های چندگانه از JSON Array |
راهنمای گام به گام برای تخریب DICOM JSON
مرحله اول: نصب Aspose.Medical
کتابخانه Aspose.Medical را به پروژه خود با استفاده از NuGet اضافه کنید.
Install-Package Aspose.Medicalمرحله دوم: فضای نام مورد نیاز را شامل کنید
ارجاعات را به فضاهای نام مورد نیاز در کد خود اضافه کنید.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;مرحله سوم: محتوای JSON را بخوانید
محتوای JSON را از یک فایل یا متغیر بخوانید.
string jsonText = File.ReadAllText("patient_scan.json");مرحله چهارم: از بین بردن داده ها
استفاده Deserialize برای بازسازی یک دایرکتوری
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);مرحله پنجم: کار با داده ها
دسترسی و دستکاری مجموعه داده های بازسازی شده.
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.");
}دانلود کامل 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");
}Deserialize 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 از روش های 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
استفاده از نرم افزار 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}");
}دانلود بازی 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 با یک نسخه سازگار از سریالیز ایجاد شده است. نسخه های نادرست می تواند منجر به شکست های سریال سازی شود.
اطلاعات اضافی
- مجموعه های داده ناشناخته شامل داده های پیکسل نیستند مگر اینکه در JSON اصلی نصب شده باشد.
- برای استفاده از تولید، قبل از تخلیه، اعتبار مناسب ورودی JSON را اجرا کنید.
- در نظر داشته باشید که مجموعه های داده های تخلیه شده را برای داده هایی که به طور مکرر به آن دسترسی دارند، ذخیره کنید.
نتیجه گیری
این آموزش نشان داده است که چگونه DICOM JSON را به بازگرداندن به Dataset یا DicomFile اشیاء در C# با استفاده از Aspose.Medical. این قابلیت امکان پردازش داده های دایکوم را فراهم می کند و یکپارچه سازی بی سیم با سیستم های ذخیره سازی و API مبتنی بر jSON.