چگونه برای سفارشی سازی خروجی DICOM JSON با DicomJsonSerializerOptions
این راهنمای نشان می دهد که چگونه برای سفارشی سازی خروجی سریالی سازی DICOM JSON با استفاده از DicomJsonSerializerOptions در C#. تنظیمات به شما امکان کنترل فرمت های کلیدی jSON، شامل متا داده های اضافی، و مدیریت ارزش های عددی با توجه به نیازهای ادغام خود را.
چرا خروجی JSON را سفارشی کنیم؟
سیستم های مختلف ممکن است نیاز به فرمت های JSON مختلف داشته باشند.
- استفاده از کلمات کلیدی قابل خواندن به جای اعداد برچسب
- شامل نام برچسب برای مستندات
- بررسی نحوه نشان دادن ارزش های عددی
- پاسخگویی به نیازهای سیستم های شخص ثالث
برچسب ها: آماده سازی محیط زیست
- Visual Studio یا هر IDE .NET سازگار را نصب کنید.
- ایجاد یک برنامه جدید .NET 8 کنسول.
- نصب Aspose.Medical از NuGet Package Manager.
گزینه های سریالی سازی در دسترس
| Option | توصیف | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | استفاده از کلمات کلیدی DICOM به جای برچسب اعداد به عنوان کلیدهای JSON | "PatientName" vs "00100010" |
WriteKeyword | شامل میدان کلمات کلیدی در هر موضوع برچسب | Adds "keyword": "PatientName" |
WriteName | شامل میدان نام در هر موضوع برچسب | Adds "name": "Patient's Name" |
NumberHandling | نظارت بر ارزش عددی | اعداد به عنوان نوارها یا ارقام JSON واقعی |
راهنمای گام به گام برای سفارشی سازی خروجی JSON
مرحله اول: نصب Aspose.Medical
کتابخانه Aspose.Medical را به پروژه خود با استفاده از NuGet اضافه کنید.
Install-Package Aspose.Medicalمرحله دوم: فضای نام مورد نیاز را شامل کنید
ارجاعات را به فضاهای نام مورد نیاز در کد خود اضافه کنید.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;مرحله سوم: گزینه ها را ایجاد کنید
ایجاد A DicomJsonSerializerOptions برای تنظیم تنظیمات استفاده کنید.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();مرحله چهارم: گزینه ها را تنظیم کنید
گزینه های مورد نظر را برای خروجی JSON خود تنظیم کنید.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;مرحله پنجم: گزینه ها را جدی بگیرید
گزینه ها را به روش Serialize منتقل کنید.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);مرحله 6: ذخیره خروجی سفارشی
ذخیره و یا استفاده از JSON سفارشی.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");نمونه کامل کد با تمام گزینه ها
در اینجا یک مثال کامل است که تمام گزینه های سفارشی را نشان می دهد:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;
// Load DICOM file
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
// Configure serialization options
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true,
NumberHandling = JsonNumberHandling.WriteAsString
};
// Serialize with custom options
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);
// Save output
File.WriteAllText("fully_customized.json", json);
Console.WriteLine("DICOM serialized with all custom options!");
Console.WriteLine(json);مقایسه فرمت خروجی
خروجی پیش فرض (نمونه استاندارد PS3.18)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}با استفاده از کلمات کلیدیAsJsonKeys = true
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}با نوشتن کلمه و نوشته نام = درست
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}نوشته هایی با برچسب: WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}در این مطلب به چند نکته می پردازیم که باید به آن توجه داشته باشیم.
{
"00280010": {
"vr": "US",
"Value": [512]
}
}استفاده از نمونه ها
برای مستندات قابل خواندن
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);برای PS3.18 خدمات وب سازگار
// Use default options for DICOM PS3.18 compliance
DicomJsonSerializerOptions webOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = false, // Use tag numbers
WriteKeyword = false,
WriteName = false,
NumberHandling = JsonNumberHandling.WriteAsString
};
string ps318Json = DicomJsonSerializer.Serialize(dcm, webOptions);جاوا اسکریپت Frontend Integration
DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Easier to work with in JS
NumberHandling = JsonNumberHandling.AllowReadingFromString // Native numbers
};
string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);برای ذخیره سازی پایگاه داده
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);نکات مهم
هشدار تعاملی
گزینه های غیر استاندارد ممکن است با برخی از پارس های DICOM سازگار شوند:
// WARNING: This format may not be compatible with all DICOM JSON parsers
DicomJsonSerializerOptions nonStandardOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true // Not PS3.18 compliant
};
// For maximum compatibility, use defaults:
DicomJsonSerializerOptions standardOptions = new DicomJsonSerializerOptions();توصیه برای انطباق
هنگامی که مطابق با DICOM PS3.18 مورد نیاز است، از تنظیمات پیش فرض استفاده کنید:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsسریالی سازی مبتنی بر جریان با گزینه ها
برای فایل های بزرگ، از سریالی سازی مبتنی بر جریان استفاده کنید:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
DicomFile dcm = DicomFile.Open("large_scan.dcm");
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true
};
using (FileStream fs = File.Create("large_customized.json"))
{
DicomJsonSerializer.Serialize(fs, dcm.Dataset, options, writeIndented: true);
}اطلاعات اضافی
- گزینه های سفارشی بر هر دو serialization و deserialisation تاثیر می گذارد - اطمینان حاصل کنید که گزینه ها در هنگام ردیابی داده ها سازگار هستند.
- در این
WriteNameگزینه نام های برچسب DICOM قابل خواندن انسان را اضافه می کند که اندازه JSON را افزایش می دهد اما خواندنی را بهبود می بخشد. - برخی از سیستم های شخص ثالث ممکن است نیاز به فرمت های خاص JSON داشته باشند - قبل از انتخاب گزینه ها، اسناد خود را بررسی کنید.
نتیجه گیری
این آموزش نشان داده است که چگونه برای سفارشی سازی خروجی سریالی سازی DICOM JSON در C# با استفاده از Aspose.Medical.با تنظیم DicomJsonSerializerOptions، شما می توانید فرمت GSON را برای برآورده کردن نیازهای یکپارچه سازی خاص در حالی که تعادل خواندن، اندازه و نیاز به تعامل تنظیم کنید.