كيفية تخصيص إخراج DICOM JSON مع DicomJsonSerializerOptions
يظهر هذا الدليل كيفية تخصيص إخراج التصنيف DICOM JSON باستخدام DicomJsonSerializerOptions في C#. تتيح لك التكيف التحكم في تنسيقات مفاتيح jSON ، وتشمل بيانات معدنية إضافية ، والتعامل مع القيم الرقمية وفقًا لمتطلبات الاندماج الخاصة بك.
لماذا تخصيص JSON Output؟
قد تتطلب أنظمة مختلفة تنسيقات JSON مختلفة.التخصيص يسمح:
- استخدام الكلمات المفتاحية القابلة للقراءة بدلاً من الأرقام
- إدراج أسماء العلامات للمستندات
- التحقق من كيفية تمثيل القيم الرقمية
- تلبية متطلبات نظام طرف ثالث محددة
المعايير: إعداد البيئة
- إعداد Visual Studio أو أي .NET IDE متوافق.
- إنشاء مشروع تطبيقات .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 Output
الخطوة 1: تثبيت Aspose.Medical
إضافة مكتبة Aspose.Medical إلى مشروعك باستخدام NuGet.
Install-Package Aspose.Medicalالخطوة 2: إدراج المساحات المطلوبة
إضافة الإشارات إلى المساحات الاسمية المطلوبة في رمزك.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;الخطوة 3: إنشاء خيارات الحالة
إنشاء A DicomJsonSerializerOptions على سبيل المثال، إعداد الإعدادات.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();الخطوة 4: إعداد الخيارات
حدد الخيارات المطلوبة لإنتاج 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"]
}
}مع UseKeywordsAsJsonKeys = صحيح
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}مع WriteKeyword وWriteName = صحيح
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}مع NumberHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}مع NumberHandling = AllowReadingFromString♰ WriteAsNumber
{
"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);برنامج JavaScript 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);
}معلومات إضافية
- الخيارات المخصصة تؤثر على كل من التسلسل والتسلسل - ضمان خيارات متسقة عند تسلسل البيانات.
- و هو
WriteNameيضيف الخيار أسماء العلامات DICOM القابلة للقراءة للإنسان والتي تزيد من حجم JSON ولكنها تحسن القراءة. - قد تتطلب بعض أنظمة الأطراف الثالثة تنسيقات JSON محددة - استعرض وثيقتهم قبل اختيار الخيارات.
استنتاجات
وقد أظهرت هذه الدليل كيفية تخصيص إخراج التصنيف DICOM JSON في C# باستخدام Aspose.Medical. من خلال تكوين DicomJsonSerializerOptions، يمكنك تكييف تنسيق jSON لتلبية متطلبات التكامل المحددة مع توازن احتياجات القراءة والحجم والتفاعل.