DicomJson ile DICOM JSON çıkışı nasıl özelleştirilirSerializerOptions
Bu öğretici, DicomJsonSerializerOptions’i kullanarak DICOM JSON serializasyon çıkışını nasıl özelleştireceğinizi gösterir.C#‘da Özelleştirme, JSon anahtar biçimlerini kontrol etmenizi sağlar, ek metadata içerir ve entegrasyon gereksinimlerine göre sayısal değerleri ele alabilirsiniz.
Neden JSON çıkışını özelleştirmeliyiz?
Farklı sistemler farklı JSON biçimleri gerektirebilir. özelleştirme izin verir:
- Etiket sayısı yerine insan okunabilir anahtar kelimeleri kullanın
- Belgelendirme için etiket isimleri dahil
- Sayısal değerlerin nasıl temsil edildiğini kontrol etmek
- Üçüncü taraf sistem gereksinimlerini karşılamak
Etiket Arşivi: çevreyi hazırlamak
- Visual Studio veya herhangi bir uyumlu .NET IDE ayarlayın.
- Yeni bir .NET 8 konsol uygulama projesi oluşturun.
- Aspose.Medical’ı NuGet Paket Yöneticisi’nden kurun.
Serializasyon seçenekleri mevcut
| seçeneği | Açıklama | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Etiket sayısı yerine DICOM anahtar kelimeleri kullanın | "PatientName" vs "00100010" |
WriteKeyword | Her etiket nesnesinde anahtar kelime alanı içerir | Adds "keyword": "PatientName" |
WriteName | Her etiket nesnesine isim alanı ekleyin | Adds "name": "Patient's Name" |
NumberHandling | Kontrol sayısal değer temsilciliği | Çizgiler veya gerçek JSON numaraları olarak sayılar |
JSON çıkışını özelleştirmek için adım adım rehber
Adım 1: Aspose.Medical yükleme
Projenize Aspose.Medical kütüphanesini NuGet kullanarak ekleyin.
Install-Package Aspose.Medical2. Adım: İhtiyacınız olan alanları içerir
Kodunuzda gerekli isim alanlarına referanslar ekleyin.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;3. Adım: Seçenekler oluşturun
oluşturmak a DicomJsonSerializerOptions Örneğin ayarları oluşturmak için.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Adım 4: Seçenekleri ayarlayın
JSON çıkışınız için istediğiniz seçenekleri ayarlayın.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Adım 5: Seçenekler ile serialize edin
Seçenekleri serialize yöntemine geçin.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Adım 6: Özelleştirilmiş çıkış kaydetme
Özelleştirilmiş JSON’u kaydedin veya kullanın.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Tüm seçenekler ile tam kod örneği
İşte tüm özelleştirme seçeneklerini gösteren tam bir örnek:
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);çıkış biçimleri karşılaştırma
Standart çıkış (PS3.18 formatında)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}KullanımKeywordsAsJsonKeys = Gerçek
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}Yazma kelimesi ve yazma adı = gerçek
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}Sayısı ile işleme = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Sayısı ile İşlem = AllowReadingFromString♰ WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}örnek örnekleri kullanın
İnsan okunabilir belgeler için
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);PS3.18 Uygun Web Hizmetleri
// 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 entegrasyonu için
DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Easier to work with in JS
NumberHandling = JsonNumberHandling.AllowReadingFromString // Native numbers
};
string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);Database depolama için
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Önemli Görüşler
İşbirliği uyarısı
Standart olmayan seçenekler bazı DICOM parserleri ile uyumluluğu bozabilir:
// 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();Uyumluluk için tavsiyeler
DICOM PS3.18 uyumluluğu gerektirdiğinde, varsayılan ayarları kullanın:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsOpsiyonlar ile akış tabanlı serializasyon
Büyük dosyalar için, akış tabanlı serializasyon kullanın:
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);
}Ek Bilgiler
- Özelleştirilmiş seçenekler hem serializasyon hem de deserializasyonu etkiler - yuvarlak sürüş verileri sırasında tutarlı seçimler sağlar.
- The için
WriteNameSeçenek, insan okunabilir DICOM etiket adlarını eklenir, bu da JSON boyutunu arttırır, ancak okuma olasılığını artırır. - Bazı üçüncü taraf sistemleri belirli JSON biçimleri gerektirebilir - seçenekleri seçmeden önce belgelerini inceleyin.
Sonuç
Bu öğretici, Aspose.Medical kullanılarak C#‘da DICOM JSON serializasyon çıkışını nasıl özelleştireceğinizi göstermiştir.DicomJsonSerializerOptions’ı yapılandırarak, belirli bir entegrasyon gereksinimlerini karşılamak için jSON biçimini ayarlayabilir ve aynı zamanda okunabilirlik, boyut ve işbirliği ihtiyaçlarını dengeleyebilirsiniz.