Bagaimana untuk menyesuaikan output DICOM JSON dengan DicomJsonSerializerOptions
Tutorial ini menunjukkan bagaimana untuk menyesuaikan output serialisasi DICOM JSON menggunakan DicomJsonSerializerOptions dalam C#. Customization membolehkan anda untuk mengawal format kunci jSON, termasuk metadata tambahan, dan mengendalikan nilai nombor mengikut keperluan integrasi anda.
Mengapa anda perlu menyesuaikan output JSON?
Sistem yang berbeza mungkin memerlukan format JSON yang berlainan. penyesuaian membolehkan:
- Menggunakan kata kunci yang boleh dibaca oleh manusia daripada nombor tag
- Termasuk nama tag untuk dokumentasi
- Mengkaji bagaimana nilai nombor diwakili
- Menyelesaikan keperluan sistem pihak ketiga tertentu
Tag: persiapan persekitaran
- Menyediakan Visual Studio atau mana-mana .NET IDE yang kompatibel.
- Mencipta projek aplikasi .NET 8 baru.
- Instal Aspose.Medical daripada NuGet Package Manager.
Pilihan serialisasi yang tersedia
| Option | Description | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Gunakan kata kunci DICOM daripada nombor tag sebagai kunci JSON | "PatientName" kepada vs "00100010" |
WriteKeyword | Menyertakan medan kata kunci dalam setiap objek tag | Adds "keyword": "PatientName" |
WriteName | Masukkan medan nama dalam setiap objek tag | Adds "name": "Patient's Name" |
NumberHandling | Perwakilan nilai nombor kawalan | Nombor sebagai string atau nombor JSON sebenar |
Langkah-langkah panduan untuk menyesuaikan output JSON
Langkah 1: Instal Aspose.Medical
Tambah perpustakaan Aspose.Medical kepada projek anda menggunakan NuGet.
Install-Package Aspose.MedicalLangkah 2: Masukkan ruang nama yang diperlukan
Tambah rujukan kepada ruang nama yang diperlukan dalam kod anda.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Langkah 3: Mencipta opsyen instans
Mencipta A DicomJsonSerializerOptions contoh untuk mengkonfigurasi tetapan.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Langkah 4: Menyediakan pilihan
Tetapkan pilihan yang dikehendaki untuk output JSON anda.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Langkah 5: Serialisasi dengan opsyen
Pindahkan pilihan kepada kaedah Serialize.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Langkah 6: Simpan output yang disesuaikan
Simpan atau gunakan JSON tersuai.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Contoh Kod Lengkap dengan Semua Pilihan
Berikut ialah 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);Membandingkan format output
Pengeluaran lalai (Standard PS3.18 Format)
{
"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 nomborHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Dengan NumberHandling = AllowReadingFromString♰ WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Menggunakan contoh kes
Dokumen yang boleh dibaca oleh manusia
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);Untuk PS3.18 Perkhidmatan Web Komprehensif
// 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);Penyimpanan pangkalan data
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 Interoperabiliti
Pilihan bukan standard boleh merosakkan keserasian dengan sesetengah 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
Apabila pematuhan DICOM PS3.18 diperlukan, gunakan tetapan lalai:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsSerialisasi berasaskan aliran dengan opsyen
Untuk fail besar, gunakan serialisasi berasaskan aliran:
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);
}Maklumat tambahan
- Pilihan disesuaikan mempengaruhi kedua-dua serialisasi dan deserialisasi - memastikan pilihan yang konsisten apabila data putaran bulat.
- The
WriteNameopsyen menambah nama tag DICOM yang boleh dibaca oleh manusia yang meningkatkan saiz JSON tetapi meningkatkan kebolehbacaan. - Sesetengah sistem pihak ketiga mungkin memerlukan format JSON tertentu - lihat dokumentasi mereka sebelum memilih pilihan.
Conclusion
Tutorial ini telah membuktikan bagaimana untuk menyesuaikan output serialisasi DICOM JSON dalam C# menggunakan Aspose.Medical.Dengan mengkonfigurasi DicomJsonSerializerOptions, anda boleh mengatur format jSON untuk memenuhi keperluan integrasi tertentu sambil menyeimbangkan keperluan pembacaan, saiz, dan interoperabiliti.