Com personalitzar la sortida DICOM JSON amb DicomJsonSerializerOptions
Aquest tutorial demostra com personalitzar la sortida de serialització de DICOM JSON utilitzant DicomJsonSerializerOptions en C#. La personalització li permet controlar els formats clau de jSON, incloure metadades addicionals i gestionar els valors numèrics segons els vostres requisits d’integració.
Per què personalitzar la sortida JSON?
Diferents sistemes poden requerir diferents formats JSON. La personalització permet:
- Utilitzar paraules clau lliures en lloc de nombres d’etiquetes
- Inclou els noms de etiquetes per a la documentació
- Controlar com es representen els valors numèrics
- Reunió amb els requisits específics del sistema de tercers
Previsió: Preparar el medi ambient
- Instal·lació de Visual Studio o qualsevol compatible .NET IDE.
- Crear un nou projecte d’aplicació .NET 8 consola.
- Instal·la Aspose.Medical des del NuGet Package Manager.
Opcions de serialització disponibles
| Option | Descripció | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Utilitzeu les paraules clau de DICOM en lloc dels nombres d’etiquetes com a claus JSON | "PatientName" El vs "00100010" |
WriteKeyword | Incloure el camp de paraules clau en cada objecte d’etiquetes | Adds "keyword": "PatientName" |
WriteName | Inclou el camp de nom en cada objecte de tag | Adds "name": "Patient's Name" |
NumberHandling | Representació de valor numèric | Nombres com a cordes o nombres JSON reals |
Guia de pas a pas per personalitzar la sortida JSON
Pas 1: Instal·lació Aspose.Medical
Afegeix la biblioteca d’Aspose.Medical al teu projecte utilitzant NuGet.
Install-Package Aspose.MedicalPas 2: Incloure els espais de nom necessaris
Afegeix referències als espais de nom requerits en el teu codi.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Pas 3: Creació d’opcions
Creació a DicomJsonSerializerOptions Instal·lació de configuracions.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Pas 4: Configuració de les opcions
Establir les opcions desitjades per a la seva sortida JSON.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Pas 5: Serialitzar amb opcions
Passar les opcions al mètode Serialitzar.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Pas 6: Salvar la sortida personalitzada
Salvar o utilitzar el JSON personalitzat.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Exemple de codi complet amb totes les opcions
Aquí teniu un exemple complet que mostra totes les opcions de personalització:
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);Comparar els formats de sortida
Format de sortida (PS3.18 estàndard)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Amb UseKeywordsAsJsonKeys = veritat
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}Escriure i escriure = veritat
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}Amb el nombreHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Amb NúmeroHandling = AllowReadingFromString < WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Utilitzar exemples de cas
Documentació de lectura humana
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);Per a PS3.18 Serveis web compatibles
// 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);Integració de 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);Per a l’emmagatzematge de bases de dades
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Consideracions importants
Avís d’interoperabilitat
Les opcions no estàndard poden trencar la compatibilitat amb alguns 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();Recomanació de conformitat
Quan es requereix el compliment de DICOM PS3.18, utilitzeu les configuracions predefinides:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsSerialització basada en el flux amb opcions
Per a arxius grans, utilitzeu la serialització basada en el flux:
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);
}Informació addicional
- Opcions personalitzades afecten tant la serialització com la deserialització - assegurar opcions coherents quan les dades giren.
- The
WriteNameL’opció afegeix els noms d’etiquetes DICOM que poden llegir-se humans i que augmenten la mida de JSON però milloren la lectura. - Alguns sistemes de tercers poden requerir formats JSON específics - consultar la seva documentació abans de triar opcions.
Conclusió
Aquest tutorial ha demostrat com personalitzar la producció de serialització de DICOM JSON en C# utilitzant Aspose.Medical. Per configurar DicomJsonSerializerOptions, es pot ajustar el format jSON per satisfer requisits específics d’integració mentre equilibren les necessitats de lectura, mida i interoperabilitat.