Cara menyesuaikan output DICOM JSON dengan DicomJsonSerializerOptions
Tutorial ini menunjukkan bagaimana untuk menyesuaikan output serialisasi DICOM JSON menggunakan DicomJsonSerializerOptions dalam C#. Customization memungkinkan Anda untuk mengontrol format kunci jSON, termasuk metadata tambahan, dan menangani nilai numerik sesuai dengan kebutuhan integrasi Anda.
Mengapa mengadaptasi output JSON?
Sistem berbeda mungkin memerlukan format JSON yang berbeda. penyesuaian memungkinkan:
- Menggunakan kata kunci yang dapat dibaca oleh manusia bukannya angka tag
- Termasuk nama tag untuk dokumentasi
- Memeriksa bagaimana nilai-nilai numerik diwakili
- Memenuhi persyaratan sistem pihak ketiga khusus
Persyaratan: Persiapan Lingkungan
- Menginstal Visual Studio atau IDE .NET yang kompatibel.
- Mencipta aplikasi .NET 8 baru.
- Instal Aspose.Medical dari NuGet Package Manager.
Pilihan serialisasi yang tersedia
| Pilihan | deskripsi | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Gunakan kata kunci DICOM bukannya angka tag sebagai kunci JSON | "PatientName" vs "00100010" |
WriteKeyword | Termasuk medan kata kunci di setiap objek tag | Adds "keyword": "PatientName" |
WriteName | Termasuk nama medan dalam setiap objek tag | Adds "name": "Patient's Name" |
NumberHandling | Perwakilan Nilai Numerik | Nombor sebagai string atau angka JSON yang sebenarnya |
Panduan langkah demi langkah untuk menyesuaikan output JSON
Langkah 1: Instalasi Aspose.Medical
Tambahkan perpustakaan Aspose.Medical ke proyek Anda menggunakan NuGet.
Install-Package Aspose.MedicalLangkah 2: Menyertakan ruang nama yang diperlukan
Tambahkan referensi ke ruang nama yang diperlukan dalam kode Anda.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Langkah 3: Mencipta Instance Options
Membuat A DicomJsonSerializerOptions Contohnya untuk mengkonfigurasi pengaturan.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Langkah 4: Mengatur opsi
Tetapkan pilihan yang diinginkan untuk output JSON Anda.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Langkah 5: Serialisasikan dengan Opsi
Beralih pilihan ke metode Serialize.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Langkah 6: Simpan output tersuai
Simpan atau gunakan JSON tersuai.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Contoh kode lengkap dengan semua opsi
Berikut adalah contoh lengkap yang menunjukkan semua pilihan penyesuaian:
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);Perbandingan format output
Pengeluaran default (format PS3.18 standar)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Dengan UseKeywordsAsJsonKeys = benar
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}dengan WriteKeyword dan WritName = benar
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}Dengan NumberHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Dengan NumberHandling = AllowReadingFromString♰ WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Gunakan contoh kasus
Dokumentasi yang dapat dibaca oleh manusia
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);Untuk PS3.18 Layanan Web Kompatibel
// 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);Untuk JavaScript Frontend Integrasi
DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Easier to work with in JS
NumberHandling = JsonNumberHandling.AllowReadingFromString // Native numbers
};
string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);Untuk penyimpanan database
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Pertimbangan penting
Peringatan Interoperabilitas
Opsi non-standar mungkin melanggar kompatibilitas dengan beberapa parsers 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();Rekomendasi untuk pematuhan
Ketika pematuhan DICOM PS3.18 diperlukan, gunakan pengaturan default:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsSerialisasi Berbasis Stream dengan Opsi
Untuk file besar, gunakan serialisasi berbasis 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);
}Informasi Tambahan
- Opsi tersuai mempengaruhi serialisasi dan deserialisasi - memastikan opsi yang konsisten saat mengelilingi data.
- dan yang
WriteNameOpsi menambahkan nama tag DICOM yang dapat dibaca oleh manusia yang meningkatkan ukuran JSON tetapi meningkatkan pembacaan. - Beberapa sistem pihak ketiga mungkin memerlukan format JSON tertentu - periksa dokumentasi mereka sebelum memilih opsi.
Kesimpulan
Tutorial ini telah menunjukkan bagaimana untuk menyesuaikan output serialisasi DICOM JSON dalam C# menggunakan Aspose.Medical.Dengan mengkonfigurasi DicomJsonSerializerOptions, Anda dapat mengadaptasi format jSON untuk memenuhi persyaratan integrasi spesifik sambil menyeimbangkan kebutuhan pembacaan, ukuran, dan interoperabilitas.