Comment personnaliser DICOM JSON Output avec DicomJsonSerializerOptions
Ce tutoriel montre comment personnaliser la sortie de sérialisation DICOM JSON à l’aide de DicomJsonSerializerOptions en C#. La personnalisation vous permet de contrôler les formats clés d’JSON, incluant des métadonnées supplémentaires et de gérer les valeurs numériques selon vos exigences d’intégration.
Pourquoi personnaliser la sortie JSON ?
Différents systèmes peuvent nécessiter différents formats JSON. La personnalisation permet:
- Utiliser des mots-clés humains à lire au lieu de numéros d’étiquette
- Inclure les noms de tags pour la documentation
- Vérifier comment les valeurs numériques sont représentées
- Réaliser les exigences spécifiques du système de tiers
Étiquette : Préparer l’environnement
- Configurez Visual Studio ou tout IDE .NET compatible.
- Créer un nouveau projet d’application pour la console .NET 8.
- Installez Aspose.Medical à partir du NuGet Package Manager.
Options de sérialisation disponibles
| Option | Description | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Utilisez les mots-clés DICOM au lieu des nombres d’étiquette comme clés JSON | "PatientName" vs "00100010" |
WriteKeyword | Inclure un champ de mots-clés dans chaque objet de tag | Adds "keyword": "PatientName" |
WriteName | Inclure le champ de nom dans chaque objet d’étiquette | Adds "name": "Patient's Name" |
NumberHandling | La représentation numérique de la valeur | Nombres en tant que lignes ou numéros JSON réels |
Guide d’étape par étape pour personnaliser la sortie JSON
Étape 1 : Installer Aspose.Medical
Ajoutez la bibliothèque Aspose.Medical à votre projet en utilisant NuGet.
Install-Package Aspose.MedicalÉtape 2 : Inclure les espaces de nom nécessaires
Ajoutez des références aux espaces de nom requis dans votre code.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Étape 3 : Créer des options
Créer A DicomJsonSerializerOptions pour configurer les paramètres.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Étape 4 : Configurer les options
Définissez les options souhaitées pour votre sortie JSON.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Étape 5 : sérialiser avec les options
Passez les options à la méthode de sérialisation.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Étape 6 : sauvegarder la sortie personnalisée
Enregistrer ou utiliser le JSON personnalisé.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Exemple de code complet avec toutes les options
Voici un exemple complet qui montre toutes les options de personnalisation:
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);Comparer les formats de sortie
Défaut de sortie (Format PS3.18 standard)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Avec UseKeywordsAsJsonKeys = vrai
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}Avec WriteKeyword et WriteName = vrai
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}Avec NumberHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Avec NuméroHandling = AllowReadingFromString et WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Utilisez des exemples de cas
Pour la documentation humaine lisible
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);Pour PS3.18 Services Web Compliants
// 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);Pour l’intégration 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);Pour le stockage de base de données
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Les considérations importantes
Avertissement d’interopérabilité
Les options non standard peuvent interrompre la compatibilité avec certains 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();Recommandation de conformité
Lorsque la conformité DICOM PS3.18 est requise, utilisez les paramètres par défaut :
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsSérialisation basée sur le courant avec des options
Pour les fichiers majeurs, utilisez la sérialisation basée sur le courant :
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);
}Informations supplémentaires
- Les options personnalisées affectent à la fois la sérialisation et la désérialisation - assurer des options cohérentes lors de la sortie des données.
- Le
WriteNameL’option ajoute les noms d’étiquettes DICOM qui peuvent être lues par l’homme, ce qui augmente la taille de JSON mais améliore la lecture. - Certains systèmes tiers peuvent nécessiter des formats JSON spécifiques - consultez leur documentation avant de choisir les options.
Conclusion
Ce tutoriel a démontré comment personnaliser la sortie de sérialisation DICOM JSON en C# en utilisant Aspose.Medical.En configurant DicomJsonSerializerOptions, vous pouvez ajuster le format J SON pour répondre aux exigences d’intégration spécifiques tout en équilibrant les besoins de lecture, de taille et d’interopérabilité.