วิธีการปรับแต่ง DICOM JSON Output ด้วย DicomJsonSerializerOptions
การฝึกอบรมนี้แสดงให้เห็นถึงวิธีการปรับแต่งผลกําเนิด DICOM JSON โดยใช้ DicomJsonSerializerOptions ใน C# การปรับตัวช่วยให้คุณสามารถควบคุมรูปแบบหลัก JSO ได้แก่ metadata เพิ่มเติม และจัดการค่าดิจิตอลตามความต้องการการรวมของคุณ
ทําไมปรับแต่ง JSON Output?
ระบบต่างๆอาจต้องการรูปแบบ JSON ที่แตกต่างกัน การปรับแต่งช่วยให้:
- ใช้คําหลักที่สามารถอ่านได้โดยมนุษย์แทนที่หมายเลขแท็ก
- รวมชื่อแท็กสําหรับเอกสาร
- ตรวจสอบวิธีการแสดงค่าดิจิตอล
- การตอบสนองความต้องการเฉพาะของระบบบุคคลที่สาม
ข้อกําหนด: การเตรียมสิ่งแวดล้อม
- ติดตั้ง Visual Studio หรือ IDE .NET ที่เข้ากันได้ใด ๆ.
- สร้างโครงการการใช้งาน .NET 8 ใหม่
- ติดตั้ง Aspose.Medical จาก NuGet Package Manager
ตัวเลือกการจัดอันดับที่มีอยู่
| Option | คําอธิบาย | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | ใช้คําหลัก DICOM แทนหมายเลขเป็นคีย์ JSON | "PatientName" VS "00100010" |
WriteKeyword | รวม field keyword ในแต่ละแท็กวัตถุ | Adds "keyword": "PatientName" |
WriteName | รวม field name ในแต่ละแท็กวัตถุ | 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;ขั้นตอนที่ 5: การรับรองด้วยตัวเลือก
แปลงตัวเลือกไปยังวิธีการ 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 และ WritName = จริง
{
"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
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 parsers บางส่วน:
// 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การจัดเรียงตามการไหลด้วยตัวเลือก
สําหรับไฟล์ขนาดใหญ่ใช้การจัดเรียงตาม Stream:
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);
}ข้อมูลเพิ่มเติม
- ตัวเลือกที่กําหนดเองมีผลกระทบทั้งการจัดเรียงและการ dezerialization - ให้ตัวเลือกอย่างสม่ําเสมอเมื่อข้อมูลหมุน
- อะไร
WriteNameตัวเลือกเพิ่มชื่อแท็ก DICOM ที่สามารถอ่านได้โดยมนุษย์ซึ่งเพิ่มขนาด JSON แต่ปรับปรุงความสามารถในการอ่าน - บางระบบบุคคลที่สามอาจต้องการรูปแบบ JSON ที่เฉพาะเจาะจง - ดูเอกสารของพวกเขาก่อนที่จะเลือกตัวเลือก
ข้อสรุป
การฝึกอบรมนี้ได้แสดงให้เห็นว่าวิธีการปรับแต่งผลกําเนิด DICOM JSON ใน C# โดยใช้ Aspose.Medical โดยการกําหนดค่า DicomJsonSerializerOptions คุณสามารถปรับรูปแบบ JSon เพื่อตอบสนองความต้องการการรวมที่เฉพาะเจาะจงในขณะที่สมดุลความสามารถในการอ่านขนาดและความต้องการในการทํางานร่วมกัน