Làm thế nào để tùy chỉnh DICOM JSON Output với DicomJsonSerializerOptions
Hướng dẫn này cho thấy làm thế nào để tùy chỉnh DICOM JSON serialization output bằng cách sử dụng DicomJsonSerializerOptions trong C#. Customization cho phép bạn kiểm soát các định dạng chìa khóa JSon, bao gồm thêm metadata, và xử lý các giá trị số theo yêu cầu tích hợp của bạn.
Tại sao tùy chỉnh JSON output?
Các hệ thống khác nhau có thể yêu cầu định dạng JSON khác. tùy chỉnh cho phép:
- Sử dụng từ khóa dễ đọc của con người thay vì thẻ số
- Include tag names for tài liệu
- Kiểm tra cách các giá trị số được đại diện
- đáp ứng các yêu cầu hệ thống cụ thể của bên thứ ba
Chủ đề: Chuẩn bị môi trường
- Cài đặt Visual Studio hoặc bất kỳ IDE .NET tương thích nào.
- Tạo một dự án ứng dụng .NET 8 mới.
- Cài đặt Aspose.Medical từ NuGet Package Manager.
Các tùy chọn Serialization có sẵn
| Lựa chọn | Mô tả | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Sử dụng từ khóa DICOM thay vì thẻ số như khóa JSON | "PatientName" vs "00100010" |
WriteKeyword | Thêm trường từ khóa trong mỗi mục tag | Adds "keyword": "PatientName" |
WriteName | Thêm tên trường trong mỗi mục tag | Adds "name": "Patient's Name" |
NumberHandling | Kiểm soát đại diện giá trị số | Số như sợi hoặc số JSON thực tế |
Hướng dẫn từng bước để tùy chỉnh JSON output
Bước 1: Cài đặt Aspose.Medical
Thêm thư viện Aspose.Medical vào dự án của bạn bằng NuGet.
Install-Package Aspose.MedicalBước 2: Thêm các không gian tên cần thiết
Thêm tham chiếu đến các không gian tên cần thiết trong mã của bạn.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Bước 3: Tạo tùy chọn
Tạo A DicomJsonSerializerOptions Ví dụ để thiết lập cài đặt.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Bước 4: Thiết lập các tùy chọn
Thiết lập các tùy chọn mong muốn cho kết quả JSON của bạn.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Bước 5: Tập trung với các tùy chọn
Chuyển các tùy chọn sang phương pháp Serialize.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Bước 6: Save the Custom Output
Lưu hoặc sử dụng JSON tùy chỉnh.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Mẫu mã đầy đủ với tất cả các tùy chọn
Dưới đây là một ví dụ đầy đủ cho thấy tất cả các tùy chọn tùy chỉnh:
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);So sánh định dạng output
Định dạng PS3 (Standard PS3.18 Format)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Với UseKeywordsAsJsonKeys = thực
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}Với WriteKeyword và WriteName = true
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}Với NumberHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Với NumberHandling = AllowReadingFromString♰ WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Sử dụng ví dụ trường hợp
Tài liệu dễ đọc của con người
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);Đối với PS3.18 Dịch vụ web phù hợp
// 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);Giới thiệu về 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);Để lưu trữ Database
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Quan trọng xem xét
Cảnh báo tương tác
Các tùy chọn không chuẩn có thể phá vỡ sự tương thích với một số 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();khuyến nghị tuân thủ
Khi tuân thủ DICOM PS3.18 được yêu cầu, hãy sử dụng cài đặt mặc định:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsStream-Based Serialization với Options
Đối với các tệp lớn, sử dụng series dựa trên 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);
}Thông tin bổ sung
- Các tùy chọn tùy chỉnh ảnh hưởng đến cả serialization và deserialisation - đảm bảo các lựa chọn nhất quán khi đi vòng dữ liệu.
- của The
WriteNameTùy chọn thêm tên thẻ DICOM có thể đọc bởi con người mà tăng kích thước JSON nhưng cải thiện khả năng đọc. - Một số hệ thống bên thứ ba có thể yêu cầu định dạng JSON cụ thể - kiểm tra tài liệu của họ trước khi chọn các tùy chọn.
Kết luận
Hướng dẫn này đã chứng minh làm thế nào để tùy chỉnh DICOM JSON serialization output trong C# bằng cách sử dụng Aspose.Medical.Bằng cách cấu hình DicomJsonSerializerOptions, bạn có thể điều chỉnh định dạng JSon để đáp ứng các yêu cầu tích hợp cụ thể trong khi cân bằng nhu cầu đọc, kích thước và tương tác.